これが機能し、コマンドラインからうまく機能することはわかっています...参照。検索マスクに複数のファイルタイプを持つ forfiles を使用していますか?
for %G in (fileone, filetwo) do forfiles /P D:\hold\logs /M *.%G.* /C "cmd /c echo @path"
私たちがやりたいことは、これらの 2 つのファイル マスクを使用することです: fileone と filetwo を使用して、別の FORFILES を呼び出します。%%G を 2 倍にすると、これはバッチ スクリプトになります。一度?
SET SOMELOGS=D:\hold\logs
for %%G in (fileone, filetwo) do forfiles /P %SOMELOGS% /M *.%%G.* /C "cmd /c ECHO @path & call :locate @path"
:locate
echo somepath %%1
FOR /f "tokens=1-9 delims=/: " %aa IN ('forfiles /P "%SOMELOGS%" /M %%1 /D -1 /C "cmd /c echo @file @fdate @ftime"') DO call :ZIP %%a %%b %%c %%d %%e %%f %%g
:ZIP
PAUSE
結果は次のとおりです。
"D:\hold\logs\server.fileone.log.2013-12-14.a"
Invalid attempt to call batch label outside of batch script.
"D:\hold\logs\server.fileone.log.2013-12-15.a"
Invalid attempt to call batch label outside of batch script.
"D:\hold\logs\server.fileone.log.2013-12-15.b"
Invalid attempt to call batch label outside of batch script.
"D:\hold\logs\server.fileone.log.2013-12-16.a"
Invalid attempt to call batch label outside of batch script.
これもうまくいかないようです..使用できません: /c 複数回... 参照..ネストされた forfiles: パスと拡張子フィルタ
SET SOMELOGS=D:\hold\logs
for %%G in (fileone, filetwo) do forfiles /p %SOMELOGS% /m *.%%G.* "forfiles /p @path /M %%1 /D -1 /C "cmd /c echo @file @fdate @ftime"') DO call :ZIP %%a %%b %%c %%d %%e %%f %%g
:ZIP
PAUSE