0
所以,衆所周知,當我們使用批處理文件將歸檔文件移動到文件夾時,存在另一個同名的歸檔文件,批處理腳本將替換舊的歸檔文件。批處理 - 爲什麼檔案沒有被重命名?
由於我正在進行存檔系統,這非常糟糕,因爲重要數據可能會在歸檔過程中丟失,因此,我在SO中創建了票據,以獲取有關如何解決此問題的信息。這裏是我的測試代碼:
set year=%DATE:~6,4%
if not exist "V:\01_%YEAR%" mkdir "V:\01_%YEAR%" - Creates folder 01_2016
for /d %%X in (01_%YEAR%) do "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\" - Archivates folder
MOVE "V:\01_%YEAR%.7z" "Z:\" - moves Archive.
用戶名爲elzooilogico,建議,而不是移動命令,使用此:
set "last=0"
set "filename=Z:\01_%YEAR%.7z"
if exist "Z:\01_%YEAR%.7z" (
for /R %%i in ("Z:\01_%YEAR%(*).7z") do (
for /F "tokens=2 delims=(^)" %%a in ("%%i") do set "last=%%a"
)
set/a last+=1
set "filename=Z:\01_%YEAR%(%last%).7z"
)
MOVE "V:\01_%YEAR%.7z" "%filename%"
Unfortunetely我還是不明白,爲什麼代碼無法工作,所以我重拍一下,這就是我想出來的。
set YEAR=%DATE:~6,4%
set filename=C:\Users\PP_lemev\Desktop\New folder\01_%YEAR%.7z
cd /d C:\Users\PP_lemev\Desktop\New folder
if not exist "C:\Users\PP_lemev\Desktop\New folder\01_%YEAR%" mkdir "C:\Users\PP_lemev\Desktop\New folder\01_%YEAR%"
for /d %%X in (01_%YEAR%) do "C:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\"
if exist "C:\Users\PP_lemev\Desktop\New folder\vairis\01_%YEAR%.7z" (
for /R %%i in ("C:\Users\PP_lemev\Desktop\New folder\01_%YEAR%(*).7z") do (
for /F "tokens=2 delims=(^)" %%a in ("%%i") do set "last=%%a"
)
set/a last+=1
set "C:\Users\PP_lemev\Desktop\New folder\01_%YEAR%(%last%).7z"
)
MOVE "%filename%" "C:\Users\PP_lemev\Desktop\New folder\vairis"
有人請向我解釋一下,爲什麼存檔名稱在腳本檢查後沒有被重命名,如果存檔已經存在?
問候,Vairis
[調試您的批處理文件(http://www.robvanderwoude.com/battech_debugging.php) – DavidPostill
請你「show」,如何調試只重命名部分代碼?我不明白調試過程,從你給我的鏈接。 – Vairis
由於該鏈接建議查看您正在使用的變量的值。提示#1:'filename'沒有被定義。提示#2:'set「C:\ Users \ PP_lemev \ Desktop \ New folder \ 01_%YEAR%(%last%)。7z」'不會做你想做的事...... – DavidPostill