使用FOR或FORFILES批处理命令单独归档特定文件 [英] Using FOR or FORFILES batch command to individually archive specific files

查看:552
本文介绍了使用FOR或FORFILES批处理命令单独归档特定文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一组在不同的目录和子目录.ISO文件的:

 <文件夹1>
    app1.iso
    app2.iso
    app3.iso
    < subfolder1>
        app1a.iso
        app2a.iso
    < subfolder2>
        app2b.iso
        app3b.iso
<文件夹2>
    app4.iso
    app5.iso
    < subfolder5>
        app20.iso

使用批处理文件,并有7-ZIP pre-安装(与配置PATH环境变量),我希望能够归档的每个.ISO到它自己的个人.7z压缩存档文件。我不希望存档的所有.ISO在当前文件夹中的成一个档案。

我试图与FORFILES一起创建自己的7-zip命令:

  FORFILES / p。 / M * .ISO / S / CCMD / C的7z一个-t7z @ path.7z -mx9 -MMT>> C:\\测试\\ 7Z-log.txt的

不过,这样做是:

  app1.iso.7z  - 包含:app1.iso,app2.iso,app3.iso
app2.iso.7z - 包含:app1.iso.7z,app1.iso,app2.iso,app3.iso
app3.iso.7z - 包含:app1.iso.7z,app2.iso.7z,app1.iso,app2.iso,app3.iso
app1a.iso.7z - 包含:app1a.iso,app2a.iso
app2a.iso.7z - 包含:app1a.iso.7z,app1a.iso,app2a.iso...

我要的是(各自在相关的文件夹或子文件夹):

  app1.iso.7z  - 包含:app1.iso
app2.iso.7z - 包含:app2.iso
app3.iso.7z - 包含:app3.iso
app1a.iso.7z - 包含:app1a.iso
...

谁能帮我对批处理命令?


解决方案

@ECHO OFF
SETLOCAL
SETsourcedir = U:\\ sourcedir
FOR / Fdelims =%%一个IN(
  '目录/ S / B / A-D%sourcedir%\\ *。异'
  )DO(
  ECHO(7Z一个-t7z%%〜fa.7z%%〜FA-mx9 -MMT

GOTO:EOF

您将需要更改 sourcedir 的设置,以适应您的情况。

所需的7z命令仅仅是为了测试目的 ECHO 编辑。 您已经验证后,该命令是正确,将 ECHO(7Z 7Z 实际归档的文件。

请注意,该重定向到日志缺失。这样做是为了使建议的行动被显示在屏幕上。

I have a set of .iso files in different directories and sub-directories:

 <folder1>
    app1.iso
    app2.iso
    app3.iso
    <subfolder1>
        app1a.iso
        app2a.iso
    <subfolder2>
        app2b.iso
        app3b.iso
<folder2>
    app4.iso
    app5.iso
    <subfolder5>
        app20.iso

Using a batch file and having 7-zip pre-installed (with PATH environment variable configured), I want to be able to archive each .iso to it's own individual .7z archive file. I don't want to archive all .iso's in a current folder into one archive.

I attempted to create my own 7-zip command in conjunction with the FORFILES:

FORFILES /P . /M *.iso /S /C "cmd /c 7z a -t7z @path.7z -mx9 -mmt >> C:\test\7z-log.txt"

However, what this does is:

app1.iso.7z - contains: app1.iso, app2.iso, app3.iso
app2.iso.7z - contains: app1.iso.7z, app1.iso, app2.iso, app3.iso
app3.iso.7z - contains: app1.iso.7z, app2.iso.7z, app1.iso, app2.iso, app3.iso
app1a.iso.7z - contains: app1a.iso, app2a.iso
app2a.iso.7z - contains: app1a.iso.7z, app1a.iso, app2a.iso

...

What I want is (each in their relevant folder or sub-folder):

app1.iso.7z - contains: app1.iso
app2.iso.7z - contains: app2.iso
app3.iso.7z - contains: app3.iso
app1a.iso.7z - contains: app1a.iso
...

Can anyone help me on the batch command?

解决方案

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
FOR /f "delims=" %%a IN (
  'dir /s/b /a-d "%sourcedir%\*.iso" '
  ) DO (
  ECHO(7z a -t7z "%%~fa.7z" "%%~fa" -mx9 -mmt 
)
GOTO :EOF

You would need to change the setting of sourcedir to suit your circumstances.

The required 7z commands are merely ECHOed for testing purposes. After you've verified that the commands are correct, change ECHO(7z to 7z to actually archive the files.

Note that the redirection-to-log is missing. This is done to allow the proposed actions to be displayed to the screen.

这篇关于使用FOR或FORFILES批处理命令单独归档特定文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆