我有一个Windows批处理文件,可以处理一堆文件。为此,我使用以下行:
forfiles /p "%~dpn1%LogDir%" /m "%SupportLog%*" /c "cmd /c logreader.py @file > \"%~dpn1%ParsedLogDir%\@file_Logreader.txt\"
这可以正常工作,但实际上遍历了我所有的文件(%SupportLog%*),并将每个文件一个一个地传递到“ logreader.py”脚本中。
我真正想做的是创建所有这些文件的列表或参数,并将所有这些文件立即传递到Python脚本中,这样应运行的命令类似于:
logreader.py "logfile.log" "logfile.log.1" "logfile.log.3" .....
我试图在forfile命令中使用SET命令,例如:
forfiles /p "%~dpn1%LogDir%" /m "%SupportLog%*" /c "cmd /c set PARAMS=%PARAMS%@file "
但是,运行此命令并将ECHO保持打开状态时,我看到:
forfiles /p "C:\Path\log" /m "logfile.log*" /c "cmd /c set PARAMS=@file "
这是不正确的。当我“回显%PARAMS%”时,我没有任何结果。
有没有办法做到这一点?
多谢
更改子 cmd
实例中的环境变量(这就是cmd /c
调用的内容)不会影响父cmd
进程中的环境。下一个代码段可以帮助您:
SETLOCAL EnableExtensions EnableDelayedExpansion
set "LogDir=%~dpn1log" my guess only
set "SupportLog=logfile.log" my guess only
set "PARAMS=" initial value
rem 1st try for /R "%LogDir%" %%a in ("%SupportLog%*") do set PARAMS=!PARAMS! "%%~a"
rem 2nd try for %%a in ("%LogDir%\%SupportLog%*") do set "PARAMS=!PARAMS! "%%~a""
rem 3rd try
for %%a in ("%LogDir%\%SupportLog%*") do set "PARAMS=!PARAMS! "%%~nxa""
echo logreader.py %PARAMS%
请注意,命令式命令logreader.py
仅echo
用于调试目的。
但是,我不知道>
重定向的目标,对不起...
资源(必读):
%~a
等特殊页面)命令行参数(参数)>>
,2>1
等特殊页)重定向编辑:
for /R
递归文件夹树:已拒绝;尝试for %%a
:有条件地对几个文件执行命令;"%%~a"
给出完全限定的文件名;"%%~nxa"
给出裸文件名和扩展名(无路径)。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句