batch-file - 分别将不同子文件夹中的文件批量移动上一级
问题描述
我有数百个结构如下的文件夹:
PARENT\FolderA\Subfolder01\files1.iso
PARENT\FolderB\Subfolder02\files2.iso
PARENT\FolderC\Subfolder03\files3.iso
我想将所有files1.iso
, files2.iso
,files3.iso
分别上移一级。应该是这样的。
PARENT\FolderA\files1.iso
PARENT\FolderB\files2.iso
PARENT\FolderC\files3.iso
更好的是可以删除不需要的Subfolder01
, 。Subfolder02
Subfolder03
如果可能的话,还可以将这些files1.iso
, files2.iso
,分别批量重命名为,files3.iso
的名称。FolderA.iso
FolderB.iso
FolderC.iso
我真的不知道如何解决这个问题。有人可以帮忙吗?
解决方案
cd PARENT
for /D %%i in (*) do (
for /D %%j in (%%i\*) do (
move "%%j\*" "%%i\%%i.iso" 2>&1>nul && rmdir "%%j" 2>&1>nul
)
)
一个解释:
cd PARENT
只需确保您在根目录中即可工作,以便其余工作
for /D %%i in (*) do (
这是一个 for 循环,对于工作目录中的每个目录,它将 %%i 设置为目录名称(例如 FolderA),然后执行以下操作:
for /D %%j in (%%i\*) do (
这是一个嵌套的 for 循环,对于 %%i 中的每个目录(在第一个循环中,FolderA),它将 %%j 设置为目录名称(在第一个循环中,FolderA\Subfolder01),然后执行以下操作:
move "%%j\*.iso" "%%i\%%i.iso" 2>&1>nul && rmdir "%%j" 2>&1>nul
将 %%j (FolderA\Subfolder01) 中以 %%j (FolderA\Subfolder01) 结尾的所有内容移动.iso
到 %%i (FolderA),并将其重命名为 %%i.iso (FolderA.iso)。如果可行,请删除 %%j 目录。将所有输出重定向到nul
(即不产生输出)。
)
)
关闭循环。
推荐阅读
- angular - 使用 createSpyObj 对 observable 进行单元测试
- android - 向上滚动时隐藏顶部布局并在向下滚动时显示(如 collapsingToolbarLayout)
- ms-access - 访问:根据按钮按下更改子表单
- python - Python中文件解析器的包装器或继承
- oauth - 在 CAS 中实现 Google 身份验证 (OAuth)
- arduino-uno - Attiny85 与 ArduinoUno 用于 I2c 通信
- c# - 如何使用 C# 在 Unity 中使用 JsonUtility 从给定的 JSON 格式获取数据?
- javascript - 如何将多个 Ajax Post 调用异步到同一个 URL
- django - 如何根据登录的用户来匹配页面上的不同内容?
- php - 带有子选择的 Doctrine 查询构建器内部联接