我有很多文件夾,我需要從任何文件夾刪除其中最舊的文件,我需要刪除的文件數量改變了任何迭代,所以我試圖做一個循環,在任何迭代做日期排序,後文件頂部的最舊文件我做「skip = variable」這個變量改變了任何迭代,它不起作用。如何跳過在cmd中運行時更改的行數?
有人有任何想法如何解決它在批處理文件? 謝謝!
我有很多文件夾,我需要從任何文件夾刪除其中最舊的文件,我需要刪除的文件數量改變了任何迭代,所以我試圖做一個循環,在任何迭代做日期排序,後文件頂部的最舊文件我做「skip = variable」這個變量改變了任何迭代,它不起作用。如何跳過在cmd中運行時更改的行數?
有人有任何想法如何解決它在批處理文件? 謝謝!
for /F
命令("skip... delims... tokens"
等)的選項可以不的for /F
命令被解析之後被改變。您需要更改在不同的子程序"skip=!numOfFiles!"
值,所以for /F
命令每次執行時解析:
@echo off
setlocal EnableDelayedExpansion
FOR /F "tokens=1,2 delims= " %%i in (C:\folder\varibales_file.txt) do (
set numOfFiles=%%j
pushd %%i
call :Sub !numOfFiles!
popd
)
goto :EOF
:Sub numOfFiles
for /f "skip=%1 delims=" %%F in ('dir "C:\folder_path_to_delete\%%i" /b /o-d') do (
rd /s /q "C:\folder_path_to_delete\%%i\%%F"
)
嗨,感謝您的回答,我試着說出您的看法,但這不起作用,我得到一個錯誤:」系統在命令上不正確「 這裏是代碼: 關閉@echo SETLOCAL EnableDelayedExpansion 淨使用\\海法的NAS \ build_results \ CleanupLogs \ reut_cleanup FOR/F 「令牌= 1,2 delims =」 %% i的(C: \ folder \ varibales_file.txt) do(set numOfBuild = %% j pushd %% i call:Sub!numOfBuild! POPD ) 轉到:EOF :子numOfBuild FOR/F 「跳過=%1 delims =」 %%的F ('DIR C:\ folder_path_to_delete \ %% I/B /鄰二d ') do(rd/s/q C:\ folder_path_to_delete \ %% i \ %% F) – Reutm
我已將它發送了幾行,但它顯示爲一行 – Reutm
恐怕我不理解你。 ..您必須將我的代碼插入.BAT文件,然後執行該文件! – Aacini
我做了以下更改「一行代碼」:
重新格式化爲使用numOfOFiles
作爲延遲變量(你做它作爲一個字符串的適當性和可讀性的批處理文件
這可能無法正常工作)
封閉所有的路徑/文件名在引號中,適當的工作,在direcotries空格或文件名
delims=
出於同樣的原因ECHO
如果輸出滿足您。(corected代碼而已,還沒有檢查它,你想要什麼)
@echo off
setlocal enabledelayedexpansion
FOR /F "tokens=1,2 delims= " %%i in (C:\folder\varibales_file.txt) do (
set numOfFiles=%%j
pushd %%i
for /f "skip=!numOfFiles! delims=" %%F in ('dir "C:\folder_path_to_delete\%%i" /b /o-d') do (
ECHO rd /s /q "C:\folder_path_to_delete\%%i\%%F"
popd
)
你確定,你要使用rd
(刪除目錄),而不是del
(刪除文件) ?
謝謝,我試過了,出現錯誤「系統找不到文件...「雖然文件存在 – Reutm
我們需要一些代碼來幫助你。謝謝 – acostela
所以你追加「skip =變量」到你想要跳過的文件,而不是跳過它們?這是問題嗎? – Neil
FOR/F「tokens = 1,2 delims =」%% i in(C:\ folder \ varibales_file.txt)do(set numOfFiles = %% j&pushd %% i&(for/f「skip = numOfFiles」 %% F in('dir C:\ folder_path_to_delete \ %% i/b/o-d')do(rd/s/q C:\ folder_path_to_delete \ %% i \ %% F))&popd) – Reutm