循环遍历每行文本文件并对每个文件运行命令

时间:2015-11-25 22:29:33

标签: powershell for-loop cmd batch-processing

我正在尝试调整下面显示的一些代码并击中墙壁。

命令行显示为:

cmd.exe /U /C "C:\Program Files\StorageCraft\ShadowProtect\VerifyImages.cmd <PathOfDirectoryWhichContainsImageFiles> <PathToOutputLogFile>

代码基本上对目录中的所有md5文件运行映像验证命令。问题是某些目录有> 200 md5文件,我只想验证过去24小时内创建的文件。

我能够创建在过去24小时内创建的文件列表,并使用powershell命令输出到文本文件。

是否可以调整下面的脚本,以便逐行读取文本文件并对每个文件运行VERIFY_SUB?我已经尝试过使用FOR / F命令但运气不好。

提前致谢。

REM *** START OF MAIN ROUTINE ***
SETLOCAL
PUSHD
CD /D %~dp0

REM Strip the outer quotes off of the directory parameter
SET PARAM_DIR=%1
SET PARAM_DIR=###%PARAM_DIR%###
SET PARAM_DIR=%PARAM_DIR:"###=%
SET PARAM_DIR=%PARAM_DIR:###"=%
SET PARAM_DIR=%PARAM_DIR:###=%

REM Strip the outer quotes off of the output log file parameter
SET PARAM_OUTPUT_FILE=%2
SET PARAM_OUTPUT_FILE=###%PARAM_OUTPUT_FILE%###
SET PARAM_OUTPUT_FILE=%PARAM_OUTPUT_FILE:"###=%
SET PARAM_OUTPUT_FILE=%PARAM_OUTPUT_FILE:###"=%
SET PARAM_OUTPUT_FILE=%PARAM_OUTPUT_FILE:###=%


FOR %%A IN ("%PARAM_DIR%\*.md5") DO (call :VERIFY_SUB "%%A" "%PARAM_OUTPUT_FILE%")

POPD
ENDLOCAL
GOTO :EOF
REM *** END OF MAIN ROUTINE ***


:VERIFY_SUB
@ECHO VERIFYING MD5 FILE %1
@ECHO VERIFYING MD5 FILE %1 >> %2
image.exe v %1 >> %2
@ECHO. >> %2
@ECHO. >> %2
@ECHO. >> %2
GOTO :EOF

0 个答案:

没有答案