【问题标题】:How to change this batch command to use only selected folders?如何更改此批处理命令以仅使用选定的文件夹?
【发布时间】:2014-03-23 00:25:14
【问题描述】:

下面的代码将每个电影文件夹下的所有文件移动到相应的电影文件夹中,如果有空文件夹,它们将被删除。
示例:
之前:
D:\电影
-----------\比基尼春假
-------------------------------------------\EPCSKGCWZCXDJEH
-------------------------------------------------- ----------\DVD
-------------------------------------------------- ---------------\P2HBSB5.iso
-------------------------------------------------- ---------------\0001.jpg
-------------------------------------------------- ---------------\lees.txt

之后:
D:\电影
------------\比基尼春假
----------------------------------\P2HBSB5.iso
----------------------------------\0001.jpg
----------------------------------\lees.txt

@echo off
 pushd "d:\MOVIES"
    for /f "delims=" %%a in (' dir /ad /b ') do (
       pushd "%%a"
         for /r %%b in (*) do move /-y "%%b" . 
         for /f "delims=" %%c in (' dir /b /s /ad ^|sort /r') do rd "%%c" 2>nul
       popd
    )
 popd

是否可以从此批处理命令更改代码中的某些内容,以便仅在选定的文件夹中执行代码?

如果将此批处理命令放入“MOVIES”文件夹并从那里执行,这可能只是一个小改动。 示例:
如果从这三部电影中只选择“MOVIES”文件夹中的“Bikini Spring Break”和“Static”,我只想要在这些电影上执行的代码。

D:\MOVIES\比基尼春假
---------------\打破女孩
---------------\静态

【问题讨论】:

  • 您如何选择文件夹?拖放?

标签: windows batch-file


【解决方案1】:

这对你有用 -

它使用拖放来处理选定的文件夹。
将文件夹拖到批处理文件上。

它不会在将文件递归移动到电影文件夹时检查是否存在文件名冲突。

它未经测试,因此请复制一些文件夹并先对其进行测试。

@echo off
:loop
       pushd "%~1"
           for /r %%b in (*) do move "%%b" .
           for /d %%c in (*) do rd /s /q "%%c"
       popd
       shift
       if not "%~1"=="" goto :loop

【讨论】:

  • 它没有用。它会删除所有子文件夹及其中的所有内容。但是把选中的文件夹拖到bat上的思路还是不错的,不然选中文件夹就无法启动bat了。
  • 我有一个 %%a 应该是 %%b - 现在测试它。请注意,如果文件夹的名称类似于one&two,那么由于资源管理器拖放中未引用它的错误,它将失败。问题字符是&,名称中也没有spaces
  • 这似乎适用于测试文件夹。现在我要在多个文件夹上测试它。但我不知道“d:\movies”在代码中做了什么。文件夹被拖到蝙蝠中。为什么代码中分配了一个文件夹?
  • 蝙蝠在多个文件夹上执行它有限制吗?我想在 174 个文件夹上测试它,但它什么也没做。如果我拖动两个文件夹,它确实有效。
  • 您对不需要的文件夹是正确的 - 我用不同类型的脚本开始了它,它只是停留在那里 - 所以我删除了这些行。在 XP 中,命令行只能有 8 KB 长,我认为以后可能会超过 174 条路径。您可能需要在几口内完成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多