ループ用のバッチ ファイル内の変数に頭を悩ませています。ダウンしたと思ったら、思ったように動かない例を見つけて、これでぐるぐる回っているような気がします...
違いが生じる場合に備えて、大量のコード全体を作成しました。基本的に、多くのサブフォルダーを含むアーカイブフォルダーがあり、アップロードデータ (スクリプトの最後でアーカイブフォルダーに移動されるかどうかを確認したい-この部分が機能するようになったときに書き込まれます) は既に処理されています。その場合は、次の日付の Duplicates フォルダーに移動します。
@echo off
for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set localDT=%%j
set localYYYY=%localDT:~0,4%
set localMM=%localDT:~4,2%
set localDD=%localDT:~6,2%
set localDate=%localYYYY%-%localMM%-%localDD%
set localTime=%localDT:~8,2%:%localDT:~10,2%
for %%f in ("C:\Test\837Store\*.837") DO if exist /R "C:\Test\Archive\%%~nxf" (
set VariableTemp=%%~nxf
echo %VariableTemp%
IF NOT EXIST "C:\Test\Archive\Duplicates" mkdir "C:\Test\Archive\Duplicates"
IF NOT EXIST "C:\Test\Archive\Duplicates\%localYYYY%" mkdir "C:\Test\Archive\Duplicates\%localYYYY%"
IF NOT EXIST "C:\Test\Archive\Duplicates\%localYYYY%\%localMM%" mkdir "C:\Test\Archive\Duplicates\%localYYYY%\%localMM%"
copy "%%~nxf" "C:\Test\Archive\Duplicates\%localYYYY%\%localMM%"
echo %localDate% %localTime% Duplicate claims file: %%~dpnxf File moved to archive >> "C:\Test\Log\Error.log"
)
pause
私の問題は、変数 %%f がループを介して設定されていないようです。mkdir コマンドは実行されますが、コピーに到達すると「ファイルが見つかりません」というエラーが表示されます。何が起こっているのかを確認するために、ファイルの名前と拡張子が表示されることを期待して、VariableTemp を含めてコードに従って設定しました。代わりに、私のエコーは「%~nxf」を出力しています
これらの変数がどのように機能するかを理解してくれる人はいますか? 837Store からファイル名が表示されないのはなぜですか?
追加情報として、C:\Test\837Store に次の 2 つのファイルがあります。
1.837 2.837
C:\Test\Archive\2013\08 に同じ 2 つのファイルがあるため、それらは 837Store から関連する Duplicates フォルダーに移動されると予想されます。
ありがとう。