私は次のスクリプトを継承しました。このスクリプトは基本的に、フォルダーを調べ、ファイルを個別に処理し、それらを移動してログに書き込みます。
私が直面している現在の問題は、フォルダーが空の場合でも、スクリプトが潜在的なファイルを移動する処理フォルダーを作成し、ログに書き込むことです。フォルダーにファイルがない場合に何も起こらないように、スクリプトを変更するのを手伝ってくれる人はいますか? スクリプトの先頭でチェックを行い、ファイルがない場合は終了する必要があることはわかっていますが、バッチ ファイルの経験がなく、これを行う方法がわかりません。
@ECHO OFF
set "folder=%~1"
::HERE I NEED ADD A CHECK TO SEE IF FILES EXIST. IF THEY DO, GO THROUGH SCRIPT.
::IF NOT, EXIT EVERYTHING
:: Set timestamp for processed folders
set TIMESTAMP=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%- %TIME:~0,2%.%TIME:~3,2%.%TIME:~6,2%.%TIME:~9,2%
:: If more than 0 files exist begin ftp and file archival otherwise exit
FOR %%a IN (c:\Encoded_HL7_Vanderbilt\*.*) DO (
cd\"Program Files (x86)\Ipswitch\WS_FTP 12"
IF ERRORLEVEL 1 (echo %TIMESTAMP% Error switching to ftp program directory>E:\HL7_Vanderbilt_log\%folder%\%TIMESTAMP%.error.txt
goto :done)
wsftppro -s local:%%a -d Vandy!Vanderbilt:/incoming/
IF ERRORLEVEL 1 (echo %TIMESTAMP% Error transmitting "%%a" file to ftp server>E:\HL7_Vanderbilt_log\%folder%\%TIMESTAMP%.error.txt
goto :done)
md "E:\Processed_HL7_Vanderbilt\%folder%\%TIMESTAMP%" 2>nul
IF ERRORLEVEL 1 (echo %TIMESTAMP% Error creating archive directory>E:\HL7_Vanderbilt_log\%folder%\%TIMESTAMP%.error.txt
goto :done)
move "%%a" "E:\Processed_HL7_Vanderbilt\%folder%\%TIMESTAMP%"
IF ERRORLEVEL 1 (echo %TIMESTAMP% Error moving "%%a" file to archive directory>E:\HL7_Vanderbilt_log\%folder%\%TIMESTAMP%.error.txt
goto :done)
)
echo %TIMESTAMP% File transfers completed successfully or no files were found>E:\HL7_Vanderbilt_log\%folder%\%TIMESTAMP%.success.txt
exit
:done
goto :EOF