BorlandIMHO
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Pasha_ZZZ Цитата: можно сделать 2 батника, второй из первого вызывать | Можно и 22, не проблема. Но мне как-то больше импонирует принцип "1 утилита - 1 батник"... Цитата: пусть вызывает самого себя, но с определенным параметром | По call вызвать метку в текущем батнике не удастся (forfiles запускает свой, отдельный экземпляр cmd.exe), обработка же входящих параметров сильно прибавит батнику громоздкости... Вариант "через ( | ), зато без временного файла" : вместо временного файла используется клипборд винды MoveOldFoldersClipPaste.cmd Код: @echo off set "SOURCEFOLDER=x:\path to\SourceFolder" set "TARGETFOLDER=y:\another path to\TargetFolder" 1>nul 2>&1 pushd "%SOURCEFOLDER%" && popd ||call :ABORT "Папка %SOURCEFOLDER% не существует!" 1>nul 2>&1 pushd "%TARGETFOLDER%" && popd ||call :ABORT "Папка %TARGETFOLDER% не существует!" (forfiles /P "%SOURCEFOLDER%" /D -7 /C "cmd /c if @isdir==TRUE echo @file")|clip for /f "usebackq delims=" %%A in (`paste`) do robocopy "%SOURCEFOLDER%\%%~A" "%TARGETFOLDER%\%%~A" /MOVE /E goto :EOF :ABORT echo Аварийное завершение работы! echo %~1 pause exit | Для того, чтобы поместить список в буфер обмена, используется штатная виндовая утилита clip.exe. Для того, чтобы прочитать буфер используется сторонняя утилита paste.exe (класть рядом с батником или в папку, прописанную в переменной окружения PATH). Минус такого подхода: изменяется содержимое буфера обмена. Может быть весьма неприятно, если данный батник запустится в процессе активной работы пользователя с буфером обмена...
| Всего записей: 2880 | Зарегистр. 12-10-2006 | Отправлено: 23:32 22-11-2016 | Исправлено: BorlandIMHO, 23:43 22-11-2016 |
|