我是批处理的新手,目前正在练习创建自动化脚本。我现在坚持这个。我希望zip文件只包含tm_user.data,但我的代码会将其归档为Fame \ tm_user.data。如果你们中的任何一个人能帮助我,我真的很感激。
变量
set default_folder_name=Main Folder
set tm_folder_name=TM Folder
set local_dir=C:\%default_folder_name%
set tm_dir=%local_dir%\%tm_folder_name%
主体
set /p id="Enter ID: "
set d = "tm_user.data"
if exist "%tm_dir%\%id%\Fame\%d%" (
"C:\Program Files\7-Zip\7z.exe" a -tzip "%tm_dir%\%id%\Fame\%id%_fame.zip" "%tm_dir%\%id%\Fame\%d%"
echo Process completed...
timeout 2
start "launch folder" "%tm_dir%\%id%\Fame"
exit
) else (
echo Error: %d% not found, please try again later!!
timeout 5
exit
)
)
批处理文件的一些最佳实践。
SET
命令中的等号符号的两侧放置空格。等号符号之前的空格成为变量名称的一部分,并且在将等号分配给变量之后的空格。我选择使用PUSHD
和POPD
命令。 PUSHD
命令设置工作目录并将先前目录存储在堆栈中。 POPD
命令返回到先前存储的目录。使用此技术,您不必在7zip命令中指定路径。
@echo off
set "default_folder_name=Main Folder"
set "tm_folder_name=TM Folder"
set "local_dir=C:\%default_folder_name%"
set "tm_dir=%local_dir%\%tm_folder_name%"
set /p "id=Enter ID: "
set "d=tm_user.data"
if exist "%tm_dir%\%id%\Fame\%d%" (
pushd "%tm_dir%\%id%\Fame"
"C:\Program Files\7-Zip\7z.exe" a -tzip "%id%_fame.zip" "%d%"
echo Process completed...
timeout 2
start .
popd
exit
) else (
echo Error: %d% not found, please try again later!!
timeout 5
exit
)