Windows批处理文件,用我正在压缩的文件重命名输出文件。

时间:2017-05-01 15:17:16

标签: batch-file command-line

我正在压缩文件并尝试重命名我的输出文件,方法是读取原始文件并使用原始文件名重命名输出文件。目前我正在运行一个批处理文件,它将通过在归档目录中创建shell并将文件复制到其中来压缩文件。我也在为事件创建一个日志文件。我正在使用7-Zip命令行版本进行压缩。

echo Start Compression

7za a -t7z "c:\Archive_Directory\%time:~0,2%%time:~3,2%-%date:~-10,2%%date:~7,2%%date:~-4,4%.7z"  "C:\File_To_Compress\*.xls" >"C:\Users\Compression_Logs\_%time:~0,2%%time:~3,2%-%date:~-10,2%%date:~7,2%%date:~-4,4%.log"

echo Finish Compression    

timeout /t 30

批处理文件创建/压缩必要的文件,并因时间戳而为所有文件指定相同的名称。希望我能弄清楚所有文件如何拥有原始文件名。

示例输出我的内容:
原始文件名 - Source.xls
压缩文件 - 1030-05012017.7z
日志文件 - 1030-05012017.log

我想要的是什么:
压缩文件 - Source_1030-05012017.7z
日志文件 - Source_1030-05012017.log

1 个答案:

答案 0 :(得分:0)

echo Start Compression

for %%a in ("C:\File_To_Compress\*.xls") do set "name=%%~na"

7za a -t7z "c:\Archive_Directory\%name%_%time:~0,2%%time:~3,2%-%date:~-10,2%%date:~7,2%%date:~-4,4%.7z"  "C:\File_To_Compress\*.xls" >"C:\Users\Compression_Logs\%name%_%time:~0,2%%time:~3,2%-%date:~-10,2%%date:~7,2%%date:~-4,4%.log"

echo Finish Compression    

timeout /t 30

依次将%%a设置为与掩码匹配的每个文件的名称,然后依次为name%%~na表示name part only

在所需的文件名中使用name作为字符串。

注意:将时间戳显示为YYYYMMDDHHMMSS更有用,它允许以逻辑方式按字母顺序排序。

echo Start Compression

for %%a in ("C:\File_To_Compress\*.xls") do (

 7za a -t7z "c:\Archive_Directory\%%~na_%time:~0,2%%time:~3,2%-%date:~-10,2%%date:~7,2%%date:~-4,4%.7z"  "%%a" >"C:\Users\Compression_Logs\%%~na_%time:~0,2%%time:~3,2%-%date:~-10,2%%date:~7,2%%date:~-4,4%.log"
)

echo Finish Compression    

timeout /t 30

此版本将单独为每个源文件创建存档和日志文件