Итерация по папке, переданной в качестве аргумента - PullRequest
1 голос
/ 06 февраля 2020

Итак, немного предыстории: у меня есть один из тех старых mp3-плееров, который, если вы просто перетаскиваете целую папку, проигрывает песни в случайном порядке. Решение, которое я нашел, - переместить файлы один за другим. Но если у вас много папок, это может занять много времени.

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

Вот код прямо сейчас:

@echo off
echo mvp3...

IF %%1.==. GOTO No1
IF %%2.==. GOTO No2

set arg1=%1
set arg2=%2
echo before_for
for /r %%i in (%%1) do (
    echo after_for
    move %%i %%2
    timeout 1
GOTO End1

:No1
  ECHO No param 1
GOTO End1
:No2
  ECHO No param 2
GOTO End1

:End1

)

Но если я попытаюсь запустить что-то вроде *: \ Users \ folder1 C: \ Users \ folder2, это вывод:

mvp3...
before_for
The syntax of the command is incorrect.

Я сделал немного утки, но не смог найти ответ, кто-нибудь может подсказать мне?

Спасибо.

1 Ответ

1 голос
/ 06 февраля 2020

l oop позволит полностью скопировать каждый файл перед началом следующей копии файла, поэтому не нужно указывать тайм-аут.

@echo off
echo mvp3...

if "%~1"=="" echo Param 1 empty & goto :eof
if "%~2"=="" echo Param 2 empty & goto :eof
for /r %%a in (%~1\*) do echo move /Y "%%a" "%~dpn2"

Здесь мы просто расширяем %1 и %2 чтобы удалить двойные кавычки, если они существуют, а затем проверить их на пустоту. затем pushd к источнику и рекурсивно копируйте каждый .mp3 файл один за другим в место назначения.

, чтобы лучше понять расширение переменной, откройте cmd и выполните for /?, прочитайте справку в подстановке секции ссылок на переменные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...