0

構文を正しくしようとしてきましたが、問題があります。構文が正しくないだけでなく、このスクリプトで次のことを行いたいと考えています。

  1. ネットワーク内のすべてのドライブで特定の条件のすべてのファイルを検索します
  2. ファイルが更新されたファイル (または新しいファイル) であるかどうかを確認します。
  3. 新しいファイルまたは更新されたファイルでない場合は、新しいファイルを見つけて置き換えます

また!これを6時間ごとなどのスケジュールで機能させることができれば...それは本当に助かります

このコードは 1 回動作するようになりましたが、数回変更して上書き保存しました。

@echo off
SETLOCAL
cls

:locate_old
for /d /r Z:\ %%a in (*) do if exist "%%~fa\old.file" set "oldFile=%%~fa\old.file"
if not defined oldFile (
echo old file not found...
) else (
echo old file found&GOTO oldFileCheck
)

:oldFileCheck
find "old file text" "%oldFile%" && echo old file is already updated || GOTO findNewFile

:findNewFile
for /d /r Z:\ %%a in (*) do if exist "%%~fa\new.file" set "newFile=%%~fa\new.file"
if not defined newFile (
echo no new file detected...
) else (
echo new file located...&GOTO fileSwap
)

:fileSwap
copy /y "%newFile%" "%oldFile%" && echo file updated || file not updated
4

1 に答える 1

0

私があなたの要件を理解している場合、まだ更新されていない場合は、Z:\ にあるすべての「old.file」ファイルを「new.file」ファイルに置き換えてください。これはテストされていません:

@if not defined debug_batch_files echo off
REM You can set debug_batch_files to 1 and quickly see verbose execution
pushd Z:\
for /f "delims=" %%a in ('dir /b /s /a-d new.file') do echo xcopy /D /Y "%%~fa" "%%~dpaold.file"
REM Remove "echo" from the above line if it displays the right paths.
popd
于 2014-08-17T09:36:36.260 に答える