Batch file 批处理文件以压缩文件夹中具有特定文件类型的文件
我需要一个批处理文件来压缩文件夹中具有特定文件类型的文件。文件类型为(.asc) 有人能帮我更正下面的代码吗 谢谢Batch file 批处理文件以压缩文件夹中具有特定文件类型的文件,batch-file,zip,Batch File,Zip,我需要一个批处理文件来压缩文件夹中具有特定文件类型的文件。文件类型为(.asc) 有人能帮我更正下面的代码吗 谢谢 for /r "C:\Test_Results\Report_%Date:~-10,2%_%Date:~-7,2%_%Date:~-4,4%" %%G in (.asc*)do ( if /i "%%~nxa"==".asc" ( pushd "%%a" REM zip all files in the backup directory FOR
for /r "C:\Test_Results\Report_%Date:~-10,2%_%Date:~-7,2%_%Date:~-4,4%" %%G in (.asc*)do (
if /i "%%~nxa"==".asc" (
pushd "%%a"
REM zip all files in the backup directory
FOR %%A IN (*.asc* *.cpi*) DO "C:\Program Files\WinRAR\WinRAR.exe" a -r "%%~nA.rar" "%%A"
FOR %%A IN (*.asc *.cpi) DO DEL "%%A"
popd
)
)
下面的代码将文件压缩到任何名为
Logfile
的文件夹中。这很好,但我现在需要做一些不同的事情(如第一篇文章中提到的)
@,我已将.asc*
更改为*.asc
,但在压缩文件时仍然存在问题。实际上,我不确定FOR循环之后的IF语句在做什么。这里需要吗
@回声1。此步骤将压缩C:\TestReports\Report\u今天日期下名为Logfile
的任何文件夹中的所有文件
for /d /r "C:\TestReports\Report_%Date:~-10,2%_%Date:~-7,2%_%Date:~-4,4%" %%a in (Logfile*) do (
if /i "%%~nxa"=="Logfile" (
pushd "%%a"
REM zip all files in the backup directory
FOR %%A IN (*.blf* *.cpi*) DO "C:\Program Files\WinRAR\WinRAR.exe" a -r "%%~nA.zip" "%%A"
FOR %%A IN (*.blf *.cpi) DO DEL "%%A"
popd
)
)
下面的代码将文件压缩到任何名为
Logfile
的文件夹中。这很好,但我现在需要做一些不同的事情(如第一篇文章中提到的)
@,我已将.asc*
更改为*.asc
,但在压缩文件时仍然存在问题。实际上,我不确定FOR循环之后的IF语句在做什么。这里需要吗
@回声1。此步骤将压缩C:\TestReports\Report\u今天日期下名为Logfile
的任何文件夹中的所有文件
for /d /r "C:\TestReports\Report_%Date:~-10,2%_%Date:~-7,2%_%Date:~-4,4%" %%a in (Logfile*) do (
if /i "%%~nxa"=="Logfile" (
pushd "%%a"
REM zip all files in the backup directory
FOR %%A IN (*.blf* *.cpi*) DO "C:\Program Files\WinRAR\WinRAR.exe" a -r "%%~nA.zip" "%%A"
FOR %%A IN (*.blf *.cpi) DO DEL "%%A"
popd
)
)
如果指定创建*.RAR文件而不是ZIP存档,则WinRAR将创建RAR存档。因此,您需要使用
“%%~nA.zip”
或使用开关-afzip
,让每个用户都认为创建的*.rar文件是一个rar归档文件,尽管它实际上是一个zip归档文件。启动WinRAR,单击菜单项帮助主题的菜单帮助,选择选项卡内容,打开列表项命令行模式,首先阅读帮助页命令行语法,然后从列表开关打开,并打开帮助页字母开关列表。在从上到下阅读有关开关的信息时生成命令行。如果按文件类型您指的是文件扩展名,则不应使用.asc*
,而应使用*.asc
来获取扩展名为.asc的所有文件。意思是“这个地方什么都可以,甚至什么都不能”。因此,通过使用.asc*
您实际上要求所有名为.asc
或名称以.asc
开头的文件*.asc*
等同于在名称中包含.asc
的文件。有一件事我不明白:你想用你的IF
语句验证什么?嗨,是的,我的想法是创建每个文件的压缩版本并删除原始文件。你能看到代码中for循环有什么错误吗?我似乎无法让它工作。谢谢。请检查中的变量:存在%%G
%%a
不匹配。如果指定创建*.RAR文件而不是ZIP存档,WinRAR将创建RAR存档。因此,您需要使用“%%~nA.zip”
或使用开关-afzip
,让每个用户都认为创建的*.rar文件是一个rar归档文件,尽管它实际上是一个zip归档文件。启动WinRAR,单击菜单项帮助主题的菜单帮助,选择选项卡内容,打开列表项命令行模式,首先阅读帮助页命令行语法,然后从列表开关打开,并打开帮助页字母开关列表。在从上到下阅读有关开关的信息时生成命令行。如果按文件类型您指的是文件扩展名,则不应使用.asc*
,而应使用*.asc
来获取扩展名为.asc的所有文件。意思是“这个地方什么都可以,甚至什么都不能”。因此,通过使用.asc*
您实际上要求所有名为.asc
或名称以.asc
开头的文件*.asc*
等同于在名称中包含.asc
的文件。有一件事我不明白:你想用你的IF
语句验证什么?嗨,是的,我的想法是创建每个文件的压缩版本并删除原始文件。你能看到代码中for循环有什么错误吗?我似乎无法让它工作。谢谢。请检查您的以了解变量:存在%%G
%%a
不匹配。我知道这不是此帖子的答案,但我想添加此代码,以便您可以看到以前的代码。我知道这不是此帖子的答案,但我想添加此代码,以便您可以看到以前的代码