0
우리 모두 알고 있듯이, 배치 파일을 사용하여 아카이브를 폴더로 이동할 때, 같은 이름의 다른 아카이브가있는 경우 배치 스크립트는 이전 아카이브를 대체합니다.배치 - 왜 아카이브의 이름이 변경되지 않습니까?
나는 아카이빙 시스템을 만들고 있기 때문에 중요한 데이터가 아카이브 과정에서 손실 될 수 있으므로이 문제를 해결하는 방법에 대한 정보를 얻으려면 지금 티켓을 준비했습니다.
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 나는 아직도 왜 코드가 작동하지 않았다, 이해, 그래서하지 않았다 : 사용자, elzooilogico라는 이름의이를 사용하는 대신 이동 명령의 제안
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.
: 여기 내 테스트 코드 그것을 약간 다시 만들고, 여기에 내가 생각해내는 것이 있습니다. 아카이브가 이미 존재하는 경우
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 : C : \ Users \ PP_lemev \ Desktop \ 새 폴더 \ 01_ % YEAR % (% last %)를 설정하십시오. 7z "'원하는 작업을 수행하지 않습니다. – DavidPostill