Batch file 批处理文件以压缩文件夹中具有特定文件类型的文件

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

我需要一个批处理文件来压缩文件夹中具有特定文件类型的文件。文件类型为(.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 %%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
不匹配。我知道这不是此帖子的答案,但我想添加此代码,以便您可以看到以前的代码。我知道这不是此帖子的答案,但我想添加此代码,以便您可以看到以前的代码