0

forfiles コマンド内のファイルを ( cmd /c copy @path destination) にコピーする宛先のパス変数の設定に問題があります。コード:

REM source folder location
set source=\\Path\TO\File\SOURCE\FOLDER
REM destination folder location
set set destination=E:\LOCAL\FOLDER\
REM log_file location
set log_file=E:\LOCAL\FOLDER\Logfile.txt

SET /a "copy_count+=0"
PUSHD  %source%
for /F "delims=" %%F in ('
forfiles /S /D -2 /C "cmd /c copy @path 0x22%destination%0x22 & echo @file %date%, %time%>>0x22%log_file%0x22"
') do SET /a "copy_count"+=1
POPD

指定されたディレクトリにファイルをコピーできませんが、パスを次のようにコマンドに直接渡します。

.....
for /F "delims=" %%F in ('
forfiles /S /D -2 /C "cmd /c copy @path E:\LOCAL\FOLDER\ & echo @file %date%, %time%>>0x22%log_file%0x22"
') do SET /a "copy_count"+=1
POPD

動作します。

変数を正しく渡すにはどうすればよいですか?

@Compoからのコメントの後に作業コードに編集

REM source folder location
set "source=\\Path\TO\File\SOURCE\FOLDER"
REM destination folder location
set "destination=E:\LOCAL\FOLDER\"
REM log_file location
set "log_file=E:\LOCAL\FOLDER\Logfile.txt"

SET /a "copy_count+=0"
PUSHD  %source%
for /F "delims=" %%F in ('
forfiles /S /D -2 /C "cmd /c If @IsDir==FALSE copy @path %destination% & echo @file %date%, %time%>>%log_file%"
') do SET /a "copy_count"+=1
POPD

タイムスタンプがプロセス全体で同じままであることに気付いていなかったため、 @aschipflコメントを明確にするために-これはあなたのコメントが暗示しているものですか?

SET /a "copy_count+=0"
PUSHD  %source%
(for /F "delims=" %%F in ('
forfiles /S /D -2 /C "cmd /c If @IsDir==FALSE copy @path %destination% & echo @file %date%, %time%)>>%log_file%"
') do SET /a "copy_count"+=1
POPD
4

1 に答える 1