Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理7zip,将文件压缩到存档中,不带任何文件夹_Batch File_7zip - Fatal编程技术网

Batch file 批处理7zip,将文件压缩到存档中,不带任何文件夹

Batch file 批处理7zip,将文件压缩到存档中,不带任何文件夹,batch-file,7zip,Batch File,7zip,我是批处理新手,目前正在练习创建自动化脚本。我现在被这件事缠住了。我希望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%

我是批处理新手,目前正在练习创建自动化脚本。我现在被这件事缠住了。我希望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
    )
    

    不要为变量指定引号。此外,不要在equals符号的任一侧放置空格
    set d=tm\u user.data
    …或
    set“d=tm\u user.data”
    (请参见此处未成为该值一部分的引号)。。。