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

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

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


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

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


Спасибо за варианты решения.
Вот ещё один вариант решения:

Код: Выделить весь код
@echo off
set curdisk=%~d0
 
Set folder_where=%curdisk%\%date:~6,4%-%date:~3,2%-%date:~0,2% reserv
 
if not exist "%folder_where%" md "%folder_where%"
 
FOR /F "tokens=1,2* delims=;" %%I IN (dir.txt) DO (
    if not exist "%folder_where%\%%J" md "%folder_where%\%%J"
    move /Y "%curdisk%\%%I" "%folder_where%\%%J"
)
При этом структура файла dir.txt поменялась и должна быть такой:
Каталог1\!Папка11\!Папка111\Папка1111;Каталог1\!Папка11\!Папка111
Каталог1\!Папка12\!Папка121\Папка1121;Каталог1\!Папка12\!Папка121
Каталог2\Папка12\Папка!331;Каталог2\Папка12
Каталог3\Папка13\;Каталог3

Т.е.:
- в переменную %%I записывается каталог "что переносить";
- в переменную %%J записывается часть каталога "куда переносить", полный путь "куда переносить" будет таким %folder_where%\%%J

Отличия от начального варианта решения:
- убрал SETLOCAL enabledelayedexpansion, который удалял воскличательные знаки в именах каталогов и файлах;
- убрал внешний цикл FOR (оставил только один цикл);
- добавил неявную переменную %%J
- изменил структуру dir.txt, в котором каждая строка формирует значения для %%I и %%J.

Отправлено: 12:44, 27-12-2018 | #8