Windows
尋找一種使用批處理文件替換目錄樹中非零大小文件的每個實例的方法
我試圖找出一種方法讓批處理腳本覆蓋特定目錄及其子文件夾中非零字節文件的每個實例。我猜,因為我正在尋找一個非零文件,如果它找不到任何非零大小的文件,我可能會用轉義符循環它?
例如,覆蓋每個非零文件大小的 example.txt 實例:
D:\ \---SubFolder1 | example.txt <10 bytes> | \---Subfolder2 | example.txt <0 bytes> | \---Subsubfolder1 example.txt <20 bytes>
在範例中,D:\Subfolder1\example.txt 和 D:\Subfolder2\Subsubfolder1\example.txt 將被覆蓋,但 D:\Subfolder2\example.txt 不會更改。
感謝@NiKiZe 的所有幫助!
工作程式碼:
@ECHO 關閉
設置 DPATH=%~dp0
FOR /R “%DPATH%” %%F IN ( ****** 見下文***) 如果 %%~zF
GTRNEQ 0 CALL :NonEmptyFile “%%~F”GOTO :EOF
:NonEmptyFile
ECHO 得到非空文件: %1
呼叫:EOF*** 替換為您要替換的文件名,確保在某處使用單個字元萬用字元(我在副檔名中使用了它 - 例如,如果我正在搜尋 example.txt,我將 * 替換為 example.t ?t)
遍歷給定路徑和所有子文件和子路徑的最小批次,
NonEmptyFile
為每個非空文件呼叫標籤。@ECHO OFF SET DPATH=%~dp0 FOR /R "%DPATH%" %%F IN (*) DO IF %%~zF GTR 0 CALL :NonEmptyFile "%%~F" GOTO :EOF :NonEmptyFile ECHO Got non empty file: %1 CALL :EOF
通過
%~1
在函式中使用,它將被擴展,您可以使用諸如COPY /Y "somefile.txt" "%~1"
未指定如何覆蓋文件之類的內容。創建“空文件”的另一個選項是
ECHO. > "%~1"
解釋:
FOR /R "%DPATH%" %%F IN (*) DO
遍歷每個文件IF %%~zF GTR 0
如果文件大小大於…CALL :NonEmptyFile "%%~F"``:NonEmptyFile
使用轉義的文件名呼叫標籤要在提示時進行測試,請使用
FOR /R "D:\SubFolder1\" %F IN (*) DO IF %~zF GTR 0 ECHO NonEmptyFile "%~F"
for
通過執行提供有關如何工作的for /?
更多資訊cmd