2018年度メモ

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を押下する

定義ファイル追記(Linux)

以下コマンドを実行して、バックアップフォルダを作成する
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を押下する

定義ファイル追記(Windows)

エクスプローラーを起動して、「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」に変更して定義ファイルを差し戻す