Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Так для чего? »
usebackq - режим обработки кавычек. Строка, заключенная в обратные кавычки, выполняется как команда, строка, заключенная в прямые одиночные кавычки, является строкой символов, а двойные кавычки могут использоваться для задания имен файлов, содержащих пробелы.
Цитата Iska:
Можно. Главное, не забывать, что раскрытие переменных окружения по %…% происходит в момент входа в операторные скобки. Потому требуется либо двойное раскрытие по call … %%SomeVar%%, либо enabledelayedexpansion и !SomeVar!. »
Это для меня немного труднее. С наскока не разберусь.
Цитата Iska:
Где Вы, полагаете, лишние циклы в коде? »
Извиняюсь, не сразу разобрал последний FOR, поэтому не сразу понял, зачем 2-й DIR.
Получается, что в MOVE задать путь для перемещения файлов маской невозможно, для этого вызывается DIR 2-й раз.
Но... 1-й и 2-й FOR я все-таки объединил, т.к. из 1-й команды DIR сразу можно взять фамилии, стоящие до знака "_", а затем подставить их перед маской перемещаемых файлов в MOVE.
Без 2-го DIR, при том обстоятельстве, что невозможно использовать маску В ПУТИ НАЗНАЧЕНИЯ КОМАНДЫ MOVE, конечно не обойтись.
Вот мой код (здесь переменные цикла немного другие, а %BoxOut2% - заданный путь внутри папки - в вопросе я его, упрощая, не писал, т.к. хотел понять главное)
Код: Выделить весь код
for /f "usebackq tokens=1 delims=_" %%a in (`dir "%BoxIn%\%MaskIn%" /b /a:-d`) do (
	for /f "usebackq delims=" %%b in (`dir "%BoxOut%\%MaskOut%%%a" /b /a:d`) do move "%BoxIn%\%%a%MaskIn%" "%BoxOut%\%%b\%BoxOut2%\"
	)

Отправлено: 10:48, 22-03-2017 | #9