【问题标题】:File name and extension lost during move -cmd移动 -cmd 期间文件名和扩展名丢失
【发布时间】:2020-03-30 23:14:22
【问题描述】:

这个小代码将文件夹移动到子文件夹中(顺便说一句,我在 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

你能帮我解决这里的问题吗?

【问题讨论】:

    标签: windows for-loop batch-file cmd move


    【解决方案1】:

    好的,与此同时,我终于想通了。 %%a 是问题所在。程序需要完整路径才能正确移动文件:

    for /R "XY" %%m in (*.txt) do move "\\?\%%m" "%ROOT_FOLDER%\%%a"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-04
      • 2023-04-08
      • 2016-12-13
      • 2021-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多