【问题标题】:Batch command to move many folders inside an alfabetic directory structure用于在字母目录结构中移动多个文件夹的批处理命令
【发布时间】:2016-04-04 17:35:40
【问题描述】:

我在一个目录中有这个内容

[FOLDERS]
Atomic
Animal
Cat
flash
Zoe

[FILES]
text.txt
audio.rar

我想在这样的字母目录结构中重新排序移动文件夹(大小写无关)。我只想移动文件夹而不移动文件

A [Atomic, Animal]
C [cat]
f [flash]
Z [zoe]
file1.rar
file2.txt

其中 A、C、f、Z 是父文件夹。括号中的文件夹是 MOVED 文件夹而不是 CONSOLIDATED 文件夹!

我可以使用哪个 .bat 命令?

我想在一个名为 A 的唯一文件夹中移动所有以 A 字母开头的文件夹。对于以 F 字母开头的文件夹,我想将它们移动到一个名为 F
的文件夹中 移动不是替换或合并,因为我假设所有以相同字母开头的文件夹都有不同的名称,我只想按第一个文件夹字母排序。
我不想按字母将唯一文件夹中的文件夹合并,而只想按第一个文件夹字母在唯一文件夹中移动

WHAT I WANT

【问题讨论】:

  • 只是为了确认。是否要将文件夹名称从Afolder1 更改为A 等等?
  • Afolder1Afolder2 怎么样?覆盖?合并他们的内容?如果两个(或更多)文件夹内有重复的文件名怎么办?
  • @Eric S 不,我不想重命名,而只是按第一个文件夹字母的字母顺序移动或复制文件夹中的文件夹。 X Stephan 不,我不想合并,我不覆盖文件夹,但只在一个名为 A 的唯一文件夹内移动所有以 A 字母。对于以 F 字母开头的文件夹,我想将它们移动到一个名为 F 的文件夹中

标签: batch-file batch-processing directory


【解决方案1】:
@echo off
setlocal enabledelayedexpansion
rem md atomic animal cat flash zoe alfa american banda barca beta brasil cane alfa\subdir
tree
for /d %%i in (*) do (
  set first=%%i
  set first=!first:~0,1!
  md !first! 2>nul
  if not "!first!" == "%%i" move "%%i" "!first!\%%i" 
)
tree

对当前文件夹中的每个目录执行以下操作:
- 获取第一个字母
- 创建单字母文件夹
- 如果文件夹不是单字母文件夹,则移动它。

使用tree显示结果

【讨论】:

  • 某些指令是错误的,因为在字母结构中只复制一个文件夹,看这里:REORDER
  • 对不起,“一个字母文件夹”必须存在才能移动。查看我编辑的代码。
  • 感谢更正,但有没有一种方法可以自动创建此列表?在某些情况下,我可以有 100-200 个目录,里面有文件夹,所以我不能在里面的所有文件夹中写下所有文件夹的名称,这会很烦人..
  • 但是,如果我的文件夹名称带有“星球大战”之类的空格?我怎么写? rem md atomic animal "star wars" zoe alfa\subdir ?
  • 这适用于文件夹名称中的空格。 rem 代表remark 这意味着,这一行是注释。我使用md <list of folders> 创建了一个可以使用的环境(并将其注释掉但没有将其删除,以便其他读者能够创建相同的环境。)是的,引号是md "folder with spaces"
猜你喜欢
  • 2016-01-30
  • 1970-01-01
  • 2013-11-17
  • 1970-01-01
  • 2019-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
相关资源
最近更新 更多