regEx.Pattern = "(_\d{4}-\d{2}-\d{2}|\d{4}-\d{2}-\d{2}_|_\d*|\d*_)"
これで
"_9999-99-99"
"9999-99-99_"
"_99999999"
"99999999_"
全部変換できる
"_?"表記にしようかと思ったけど”_99999_”なパターンは除外した
VBSの正規表現表記は知らないが、
他の言語とマッチパターンの書き方が同じならこうかな?
前後の_と、以下のような場合のパターン。
20180706
20180706111111
2018-07-06
07-06-2018
18-07-06
ReplaceTest("_?([0-9]{8,14}|[0-9]{2,4}-[0-9]{2}-[0-9]{2,4})_?", "")
VBS
For Each「①TEMP側のフォルダ」から1つずつ「★TEMP側のファイル」を取得する
’「★TEMP側のファイル名」の数字箇所を置換して「②TEMP側の置換したファイル名」を取得する
TempRepFileName = ReplaceTest()
'「★TEMP側のフォルダ」のTEMP部分を置換して「③ACLAS側のフォルダ」を取得する
AclasParFolder = Replace()
'「③ACLAS側のフォルダ」から1つずつ「★ACLAS側のファイル」を取得する
For Each
'「★ACLAS側のファイル名」の数字箇所を置換して「④ACLAS側の置換したファイル名」を取得する
AclasRepFileName = ReplaceTest()
'「②TEMP側の置換したファイル名」と「④ACLAS側の置換したファイル名」が同じ場合は下記処理を実行
If TempRepFileName = AclasRepFileName Then
'「★TEMP側のファイルのタイムスタンプ」より「★ACLAS側のファイルのタイムスタンプ」が古い場合は下記処理を実行
If Temp.タイムスタンプ > Aclas.タイムスタンプThen
'「★TEMP側のファイル」を「③ACLAS側のフォルダ」へコピーする
'ログ出力
'「★ACLAS側のファイル」を削除する
'ログ出力
End If
’「⑤コピーフラグ」を「1」にする
CopyFlg = 1
End If
Next
’「⑤コピーフラグ」が「0」の場合は下記処理を実行
If CopyFlg = 0 Then
'「★TEMP側のファイル」を「③ACLAS側のフォルダ」へコピーする
'ログ出力
End If
’「⑤コピーフラグ」を「0」にする
Next
Option Explicit
Dim strFormattedDate
Dim ScriptBin
Dim ScriptTmp
Dim fso
Dim Exec
Dim strFilePathFrom ' コピー対象ファイル
Dim strFilePathTo ' コピー先フォルダ名
Dim ScriptFullName
strFormattedDate = Replace(Replace(Replace(Now(), "/", ""), ":", ""), " ", "")
ScriptFullName = WScript.ScriptFullName
ScriptBin = "C:\script\bin"
ScriptTmp = "C:\script\tmp"
Set fso = CreateObject("Scripting.FileSystemObject")
'■ファイル作成
Set Exec = fso.CreateTextFile(ScriptTmp & "\test.txt",True)
'■ファイルコピー
strFilePathFrom = ScriptFullName
strFilePathTo = ScriptTmp & "\" & strFormattedDate & ".txt"
'▼ファイルコピー(上書き/ファイル名指定)
Call fso.CopyFile(strFilePathFrom, strFilePathTo)
Wscript.Echo("エラー番号 " & Err.Number & " " & Err.Description)
Err.Clear
'▼ファイルコピー(上書きしない/ファイル名指定)
On Error Resume Next
Call fso.CopyFile(strFilePathFrom, strFilePathTo, False)
Wscript.Echo("エラー番号 " & Err.Number & " " & Err.Description)
Err.Clear
'▼ファイルコピー(ワイルドカード指定)
strFilePathFrom = ScriptBin & "\" & "*.vbs"
strFilePathTo = ScriptTmp
Call fso.CopyFile(strFilePathFrom, strFilePathTo)
Wscript.Echo("エラー番号 " & Err.Number & " " & Err.Description)
Err.Clear
'■フォルダコピー
'Call fso.CopyFile(strFilePathFrom, strFilePathTo, False)
Dim oShell, oExec, oText, cmdResult ,objFile,M_rowCount,TMP_LISTFILE,resultLine
TMP_LISTFILE = "C:\Users\usre\Desktop\test.txt"
Set oShell = WScript.CreateObject("WScript.Shell")
Set oFso = CreateObject("Scripting.FileSystemObject")
Set oText = oFso.CreateTextFile( TMP_LISTFILE, True )
Set oExec = oShell.Exec( "cmd /c dir" )
' コマンドの標準出力を読み込む
cmdResult = oExec.StdOut.ReadAll()
' TMPリストファイルへ書き出す
oText.WriteLine( cmdResult )
oText.Close
Set objFile = oFso.OpenTextFile( TMP_LISTFILE )
M_rowCount = 1
Do Until objFile.AtEndOfStream = true
resultLine = objFile.ReadLine
if M_rowCount >= 2 then
BkupID = Left( resultLine , 15)
WScript.Echo BkupID
'消す
End if
M_rowCount = M_rowCount + 1
Loop
objFile.Close
oFso.DeleteFile TMP_LISTFILE , True
'オブジェクトとの関連付けを解除
Set oText = Nothing
Set oExec = Nothing
Set oShell = Nothing
Set oFso = Nothing
Set objFile = Nothing
crontab差し替え
以下コマンドを実行して、バックアップフォルダを作成する
mkdir -m 777 /tmp/20180527
mkdir -m 777 /tmp/`date +%Y%m%d`
以下コマンドを実行して、カレントディレクトリを移動する
cd /tmp/20180527
以下コマンドを実行して、バックアップを取得する
cp -p /etc/crontab crontab.20180527
以下コマンドを実行して、ファイル内容を編集する(置換の場合)
sed -i -e "s/^\* \* \* \* \* user-name command to be executed$//g" /etc/crontab
以下コマンドを実行して、ファイル内容を編集する(行削除の場合)
sed -i -e "/^ \* \* \* \* \* user-name command to be executed$/d" /etc/crontab
以下コマンドを実行して、ファイル内容を比較する
diff /etc/crontab crontab.20180527
【結果】
16c16
< * * * * * user-name command to be executed
---
>
以下コマンドを実行して、定義ファイルを差し戻す
cp -p crontab.20180527 /etc/crontab
「cp: overwrite `/etc/hosts'? 」と表示されるので「y」を入力して、Enterを押下する
定義ファイル差し替え(Linux)
以下コマンドを実行して、バックアップフォルダを作成する
mkdir -m 777 /tmp/20180525
mkdir -m 777 /tmp/`date +%Y%m%d`
作業端末のWinSCPを実行する
下記ファイルをアップロードする
送信元:C:\tmp\hosts
送信先:/tmp/20180525
以下コマンドを実行して、カレントディレクトリを移動する
cd /tmp/20180525
以下コマンドを実行して、バックアップを取得する
cp -p /etc/hosts hosts.20180525
以下コマンドを実行して、パーミッションと所有者の設定を変更する
chmod 644 hosts
chown root:root hosts
以下コマンドを実行して、パーミッションと所有者の設定確認する
ll
以下コマンドを実行して、ファイル内容を比較する
diff /etc/hosts hosts
【結果】
> 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
以下コマンドを実行して、定義ファイルを差し替える
cp -p hosts /etc
以下コマンドを実行して、ファイル内容を比較する
diff /etc/hosts hosts.20180525
【結果】
< 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
以下コマンドを実行して、定義ファイルを差し戻す
cp -p hosts.20180525 /etc/hosts
「cp: overwrite `/etc/hosts'? 」と表示されるので「y」を入力して、Enterを押下する
以下コマンドを実行して、バックアップフォルダを作成する
mkdir -m 777 /tmp/20180526
mkdir -m 777 /tmp/`date +%Y%m%d`
以下コマンドを実行して、カレントディレクトリを移動する
cd /tmp/20180526
以下コマンドを実行して、バックアップを取得する
cp -p /etc/hosts hosts.20180526
以下コマンドを実行して、定義ファイルに追記する
echo "127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4" >> /etc/hosts
echo "127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4" >> /etc/hosts
以下コマンドを実行して、ファイル内容を比較する
diff /etc/hosts hosts.20180526
【結果】
< 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
< 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
以下コマンドを実行して、定義ファイルを差し戻す
cp -p hosts.20180526 /etc/hosts
「cp: overwrite `/etc/hosts'? 」と表示されるので「y」を入力して、Enterを押下する
エクスプローラーを起動して、「C:\Windows\System32\drivers\etc」に移動する
「hosts」をコピーして、名前を「hosts.yyyymmdd」とする
コマンドプロンプトを起動する
以下コマンドを実行して、カレントディレクトリを移動する
cd C:\Windows\System32\drivers\etc
以下コマンドを実行して、定義ファイルに追記する
echo "127.0.0.1 localhost" >> hosts
echo "127.0.0.1 localhost" >> hosts
以下コマンドを実行して、ファイル内容を比較する
fc hosts hosts.20180526
【結果】
***** hosts
"127.0.0.1 localhost"
"127.0.0.1 localhost"
***** HOSTS.20180526
*****
作業前に取得したバックアップファイル「hosts.20180526」の名前を「hosts」に変更して定義ファイルを差し戻す