別のバッチファイルを呼び出して実行します。処理するファイルがx分より新しい場合のみ


0

私はRobocopy他のいくつかを試しましたが、ファイルのタイムスタンプではなく、日付のみを確認しました。

コピー前にファイルのタイムスタンプを比較するが、時間設定で.batを呼び出さないスクリプトをいくつか見つけました。

圧縮してユーザーグループにメールで送信する必要がある実行可能ファイルがありますが、それが15分よりも新しい場合のみです。15分以上経過している場合、スクリプトは終了するだけで、何もしません。

Copy / RAR / MailTo関数のバッチファイルは機能しています。これは時間の比較であり、私が助けを必要としています。

追加:

最初のbatファイル:

cd
cd c:\lighthouse\
mv production.exe production_old.exe /Y
cd\
cd c:\production\backup\
cd
xcopy "c:\production\backup\production.exe" "c:\lighthouse\production.exe" /Y
xcopy "c:\production\backup\production.exe" "i:\production.exe" /Y
xcopy "c:\production\backup\production.exe" "c:\RAR_and_Mail\production.exe" /Y
cd

2番目のbatファイル:production.exeが15分より新しい場合にのみ実行する必要があります。それ以外の場合は終了します。

cd\
cd c:\RAR_and_Mail\
xcopy "c:\RAR_and_Mail\*.rar" "c:\RAR_and_Mail\old\*.rar" /Y
del c:\RAR_and_Mail\*.rar
set MyDate=%date:/=.%.%
set WINRAR=C:\Program Files\WinRAR\rar.exe
set production=c:\RAR_and_mail\
cd /D %production%
"%WINRAR%" a -r -s -m5 /Y /R "%production%\%MyDate%_production.rar" "*.exe"
cd
call c:\batches\SendMail_Executable.bat

呼び出される3番目の.bat:

echo off
set MyDate=%date:/=.%.%
c:\sendmail\sendEmail -o tls=no -f test@mail.com -t test@mail.com -s 254.20.10.100:25 -u "Latest work Update" -a "c:\RAR_and_Mail\%MyDate%_production.rar" -m "'Save As' the attachement, go to folder where it was saved, and 'extract here', overwriting existing production.exe."

コードを投稿できますか?どのOSを使用していますか?
ブルギ

こんにちは、グラマーに感謝します。MS Server2003 DOS最初のバッチファイル:cd cd c:\ TheWork \ move RunThis.exe RunThis_old.exe cd \ cd c:\ work \ backup \ cd xcopy "c:\ work \ backup \ RunThis.exe" "c:\ TheWork * .exe "/ Y xcopy" c:\ work \ backup \ RunThis.exe "" i:*。exe "/ Y cd
Christiaan Em

質問を編集してコードを含める必要があります。また、Server 2003はMicrosoftによってサポートされなくなったことを指摘する必要があります。企業環境では、Server 2012または2016へのアップグレードパスを検討する必要があります
。– Burgi

2番目のバッチファイル。最初の5分後に実行されますが、runthis.exeが15分より新しい場合は終了し、何もしません:cd \ cd c:\ RAR_and_Mail \ xcopy "c:\ RAR_and_Mail * .rar" "c:\ RAR_and_Mail \ old * .rar "/ Y del c:\ RAR_and_Mail * .rar set MyDate =%date:/=.%.% set WINRAR = C:\ Program Files \ WinRAR \ rar.exe set tallship = c:\ RAR_and_mail \ cd / D%tallship% "%WINRAR%" a -r -s -m5 / Y / R "%tallship%\%MyDate%_runthis.rar" " .exe" rem "%WINRAR%" a -r -s -m5 / Y / R "%tallship%\ runthis.rar" " .exe" cd call c:\ batches \ SendMail_Executable.bat
Christiaan Em

呼び出されるバッチファイル:echo off set MyDate =%date:/=.%.% c:\ sendmail \ sendEmail -o tls = no -f user01@runthis.co.za -t user01@runthis.co.za -s 200.2.1.10:25 -u「最新のトールシップの更新」-a "c:\ RAR_and_Mail \%MyDate%_runthis.rar" -m "「名前を付けて保存」添付ファイル、フォルダーに移動、「ここに抽出」、既存のrunthisを上書きします。 EXE。"
クリスティアンEm

回答:


0

PowerShellで

$FilePath = 'production.exe'
$lastWrite = (get-item $FilePath).LastWriteTime
$timespan = new-timespan -minutes 15

if (((get-date) - $lastWrite) -lt $timespan) {
    # do this if file newer
} else {
    # do this if file older
}

「WindowsPowerShell®は、特にシステム管理用に設計されたタスクベースのコマンドラインシェルおよびスクリプト言語です。WindowsPowerShellは、.NET Framework上に構築され、ITプロフェッショナルおよびパワーユーザーがWindowsオペレーティングシステムおよびアプリケーションの管理を制御および自動化するのに役立ちますWindowsで実行します。

コマンドレットと呼ばれるWindows PowerShellコマンドを使用すると、コマンドラインからコンピューターを管理できます。Windows PowerShellプロバイダーを使用すると、ファイルシステムにアクセスするのと同じくらい簡単に、レジストリや証明書ストアなどのデータストアにアクセスできます。さらに、Windows PowerShellには、豊富な式パーサーと完全に開発されたスクリプト言語があります。」

コマンドプロンプト([スタート]、[実行]、[cmd]、[OK])を実行し、powershellと入力してからReturnキーを押します。その後、PowerShell PSプロンプトが表示されます。

Powershellは、MS Server 2003のアドオンです。サーバーにまだインストールされておらず、インストール方法を知りたい場合は、MS TechNetブログがあります。

PowerShellをWindows Server 2003にインストールする方法

PowerShellスクリプトを.ps1拡張子で保存します

バッチからPowerShellスクリプトを呼び出すことができます

PowerShell.exe -NoProfile -ExecutionPolicy Bypass -Command "& 'powershellscriptname.ps1'"

同様にPowershell内からバッチを呼び出します

start-process C:\batch.bat

このようなものを呼び出すための.ps1ファイルを与える

Move-Item c:\lighthouse\production.exe c:\lighthouse\production_old.exe -force -ErrorAction SilentlyContinue
$files = @("c:\lighthouse\production.exe","c:\RAR_and_Mail\production.exe")#,"i:\production.exe")
foreach ($file in $files){
Copy-item c:\production\backup\production.exe $file -force
}
Start-Sleep -s 300
$FilePath = 'c:\lighthouse\production.exe'
$lastWrite = (get-item $FilePath).LastWriteTime
$timespan = new-timespan -minutes 15

if (((get-date) - $lastWrite) -lt $timespan) {
        # do this if file newer
    Copy-item "c:\RAR_and_Mail\*.rar" "c:\RAR_and_Mail\old\*.rar" -force -ErrorAction SilentlyContinue
    Remove-Item "c:\RAR_and_Mail\*.rar"
    $MyDate = get-date
    $Rarfile = "c:\RAR_and_mail\" + "$MyDate" + "_production.rar"
    & "C:\Program Files\WinRAR\rar" a r "$Rarfile" "c:\RAR_and_mail\*.exe"
    start-process c:\batches\SendMail_Executable.bat
    } else {
        # do Nothing, file older.
    }

または、代わりにこれを追加して実行するだけです

start-process "insert 1st_bat_file path here"
$FilePath = 'production.exe'
$lastWrite = (get-item $FilePath).LastWriteTime
$timespan = new-timespan -minutes 15

if (((get-date) - $lastWrite) -lt $timespan) {
    # do this if file newer
start-process "insert 2nd_bat_file path here"
start-process c:\batches\SendMail_Executable.bat
} else {
    # do this if file older
}

0
  1. 15分ごとにスケジューラによって実行されるBATCHファイル:

cd cd c:\ work \ move workfile.exe workfile_old.exe cd \ cd c:\ Snowflake \ backup \ cd xcopy "c:\ Snowflake \ backup \ workfile.exe" "c:\ work * .exe" / Y xcopy "c:\ Snowflake \ backup \ workfile.exe" "i:*。exe" / Y xcopy "c:\ Snowflake \ backup \ workfile.exe" "c:\ RarAndMail * .exe" / Y cd PowerShell.exe- NoProfile -ExecutionPolicy Bypass -Command "& 'c:\ batches \ workfileAutoMail \ Distribute.ps1'"

  1. distribute.ps1の詳細

$ FilePath = 'c:\ RarAndMail \ workfile.exe' $ lastWrite =(get-item $ FilePath).LastWriteTime $ timespan = new-timespan -minutes 15

if(((get-date)-$ lastWrite)-lt $ timespan){#ifer new file starter process c:\ batches \ workfileAutoMail \ Mailworkfile.bat} else {#古いファイルならこれを行う}

  1. Mailworkfile.batの詳細

cd \ cd c:\ RarAndMail \ xcopy "c:\ RarAndMail * .rar" "c:\ RarAndMail \ old * .rar" / Y MyDate =%date:/=.%.% set WINRAR = C:\ Program Files \ WinRAR \ rar.exe set Snowflake = c:\ RarAndMail \ cd / D%Snowflake% "%WINRAR%" a -r -s -m5 / Y / R "%Snowflake%\%MyDate%_workfile.rar" " * .exe "cd c:\ RarAndMail \ set MyDate =%date:/=.%.% c:\ sendmail \ sendEmail -o tls = no -f admin@workfile.com -t users@workfile.com -s 205.20 .10.100:25 -u "最新のスノーフレークの更新" -a "c:\ RarAndMail \%MyDate%_workfile.rar" -m "添付ファイルを「名前を付けて保存」、保存されたフォルダーに移動し、「ここに抽出」、既存のworkfile.exeを上書きします。」cd \ xcopy "c:\ RarAndMail * .rar" "c:\ RarAndMail \ old * .rar" / Y del c:\ RarAndMail * .rar

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.