Has*_*ziz 1 windows windows-7 windows-explorer command-line cmd.exe
首先,我知道有很多类似的问题,我知道是因为我一定尝试过至少改编其中的 5 个,但我仍然在这里问,因为我对 CMD 的掌握很糟糕(我实际上认为我已经很好了)到目前为止)让我感到沮丧的是通用的、无用的错误,而且我无法理解语法的哪一部分是错误的。这可能是由于其他问题涉及各自OP的文件夹/文件名结构,并且当我尝试使代码适应我自己的文件夹/文件结构时,它拒绝工作。因此,我在这里寻求一个 CMDfor循环解决方案,该解决方案实际上适用于我自己的文件和文件夹结构。
我有一个父文件夹,其中包含许多其他文件夹,其中有文件:
Parent Folder
Subfolder
File1
File2
Subfolder
File1
File2
Subfolder
File1
File2
Run Code Online (Sandbox Code Playgroud)
...等等。
我想结合使用 CMDfor循环和move命令将子文件夹中的所有文件提取到父文件夹,使每个子文件夹为空。
当给出 CMDfor循环时,请分解命令的每个部分正在做什么,因为这将有助于确保我理解代码,并希望最大限度地减少我让它为自己工作的麻烦。
好吧,我终于通过改编另一个问题的代码找到了答案。感谢@AFH 澄清了我在这个答案的评论中不确定的部分,并感谢他对此的总体帮助 - 非常感谢。
for /r "PARENTFOLDER" %d in (*.*) do move "%d" "PARENTFOLDER"
请记住将 的所有实例替换PARENTFOLDER为要将文件提取到的文件夹的路径。
从其中提取文件后,您不太可能需要保留剩余的空子文件夹 - 我当然不需要 - 因此下面的命令也会自动删除它们。
for /r "PARENTFOLDER" %d in (*.*) do move "%d" "PARENTFOLDER" && cd "PARENTFOLDER" && for /f "delims=" %d in ('dir /s /b /ad ^| sort /r') do rd "%d"
再次将 的所有实例替换PARENTFOLDER为要将文件提取到的文件夹的路径。
然而,到目前为止,它不再是一行代码,并且在粘贴到命令行时开始变得有点复杂,因此将整个内容放入批处理文件中会更容易。使用变量作为父文件夹的路径允许您仅替换PARENTFOLDER文件开头的一个实例,这也是一种更安全的选择,可以防止意外删除您可能想要保留的空文件夹。
粘贴到文本文件中,替换PARENTFOLDER为您希望其使用的文件夹的路径,然后使用.bat扩展名保存。在任意目录下运行。
@ECHO OFF
SETLOCAL
SET parent="PARENTFOLDER"
CD /d %parent%
FOR /r %parent% %%d IN (*.*) DO MOVE "%%d" %parent%
FOR /f "delims=" %%d IN ('DIR /a:d /s /b ^| SORT /r') DO RD "%%d"
ECHO Done. Press any key to terminate script.
PAUSE >NUL
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17805 次 |
| 最近记录: |