移动-cmd期间丢失文件名和扩展名

问题描述 投票:0回答:1

此小代码将文件夹移动到子文件夹中(通过我在stackowerflow上找到的方式,谢谢:))。我添加了一些其他功能,除了一部分之外,其他所有功能都很好。参见下面的代码,有问题的部分是这里的最后一部分。

我想在文件夹中搜索.txt文件,然后将它们向上移动到父目录下(这部分正在工作)。但是不幸的是,文件丢失了扩展名,并且其名称也更改为父目录的名称。您可以在附加的图像上看到它(我复制的文件没有移到那里):enter image description here

@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

你能帮我在这里弄乱什么吗?

windows for-loop batch-file cmd move
1个回答
0
投票

好吧,同时我终于明白了。%%a是问题所在。该程序需要完整路径才能正确移动文件:

for /R "XY" %%m in (*.txt) do move "\\?\%%m" "%ROOT_FOLDER%\%%a"
© www.soinside.com 2019 - 2024. All rights reserved.