Имя и расширение файла потерялись при перемещении -cmd - PullRequest
0 голосов
/ 31 марта 2020

Этот маленький код перемещает папки в подпапки (кстати, я нашел это здесь в stackowerflow. Спасибо :)). Я добавил некоторые другие функции, и они хорошо работают, кроме одной части. Ниже приведен код, проблемная часть c является последней частью здесь.

Я хочу найти .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

Можете ли вы помочь, что я тут испортил?

1 Ответ

0 голосов
/ 31 марта 2020

Хорошо, пока что я наконец понял. %%a была проблема. Для правильного перемещения файла программе необходим полный путь:

for /R "XY" %%m in (*.txt) do move "\\?\%%m" "%ROOT_FOLDER%\%%a"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...