Batch file Windows批处理文件以使用我正在压缩的文件重命名输出文件。
我正在压缩一个文件并试图重命名我的输出文件,方法是读取原始文件并用原始文件名重命名输出文件。目前,我正在运行一个批处理文件,它将通过在归档目录中创建shell并将文件复制到其中来压缩文件。此外,我正在为事件创建日志文件。我正在使用7-Zip命令行版本进行压缩。Batch file Windows批处理文件以使用我正在压缩的文件重命名输出文件。,batch-file,command-line,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
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。日志
我想要的:
压缩文件-源代码_1030-05012017.7z
日志文件-Source_1030-05012017.Log
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
设置为与掩码匹配的每个文件的名称,然后依次将每个文件的名称设置为名称
(%%~na
仅表示名称部分
)
在所需的文件名中使用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
此版本将分别为每个源文件创建归档文件和日志文件
的帮助将提供一些有用的信息,特别是关于参数扩展的信息。请注意%~
扩展,特别是%~n
。如前所述,这将不起作用;它将只给出扩展中最后一个文件的名称。请参阅,了解如何在for
命令中使用(
和)
对多个命令进行分组。@JeffZeitlin-我猜出于某种原因,这是一个深思熟虑的选择。@SomethingDark:似乎OP希望将所有目标文件压缩为一个文件-那么要指定什么名称?如果每个都要单独压缩,为什么xls文件一开始相对较小,因此似乎没有太多意义。@Magoo-我不反对对压缩Excel工作簿实用性的评估;然而,我可以将此视为通用“归档”过程的CMVE,并从该角度进行了评论。