此小代码将文件夹移动到子文件夹中(通过我在stackowerflow上找到的方式,谢谢:))。我添加了一些其他功能,除了一部分之外,其他所有功能都很好。参见下面的代码,有问题的部分是这里的最后一部分。
我想在文件夹中搜索.txt文件,然后将它们向上移动到父目录下(这部分正在工作)。但是不幸的是,文件丢失了扩展名,并且其名称也更改为父目录的名称。您可以在附加的图像上看到它(我复制的文件没有移到那里):
@echo on
setlocal EnableDelayedExpansion
set "ROOT_FOLDER=C:\Users\xy\Desktop\folder"
:: For each folder in root folder
cd "%ROOT_FOLDER%"
for /D %%a in (*) do (
cd "%%a"
:: Move all existent folders into "XY" folder
for /F "delims=" %%b in ('dir /B /A:D') do (
md XY 2> NUL
move "%%b" "XY\%%b"
)
:: Move all existent files into "XY" folder
md XY 2> NUL
move *.* XY
:: Move txt files under parent folder
for /R "XY" %%m in (*.txt) do move "\\?\%%m" "%%a"
cd ..
)
pause
你能帮我在这里弄乱什么吗?
好吧,同时我终于明白了。%%a
是问题所在。该程序需要完整路径才能正确移动文件:
for /R "XY" %%m in (*.txt) do move "\\?\%%m" "%ROOT_FOLDER%\%%a"