Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

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

Googler


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

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


Freezet
Цитата:
как я понимаю нужно исключить из поиска ту папку в которую будет копироваться информация »
можно просто почистить целевую папку, скинуть список в файл и только потом копировать по списку
Цитата:
по не сетевым (hdd) и сьемным (usb) »
вариант для всех локальных за исключением CD/DVD приводов, версия XP должна быть русской
(имя временного файла - имя CMD-файла с расширением .LST)
Код: Выделить весь код
@Echo Off

Set $MSK=*.CMD
Set $DST=X:\FILES
Set $LST=%TEMP%\%~n0.tmp

If Exist "%$LST%" DEL /F /Q "%$LST%"
If Exist "%$DST%" (
    @Echo Удаление каталога назначения:
    RD /S "%$DST%"
)
MD "%$DST%"

@Echo.
For /F "Tokens=3 Delims= " %%i In ('@Echo List Volume^|@DiskPart^|@FindStr /RBC:"  *Том [0-9]  *[A-Z] "^|Find /V "-ROM"') Do (
    @Echo Формирование списка файлов по маске "%%i:\%$MSK%"...
    DIR /B/S/A:-D "%%i:\%$MSK%" >>"%$LST%"
)

@Echo.
@Echo Копирование отобранных файлов в назначенную папку...
For /F "Delims=" %%i In ('FindStr /VBRIC:"[A-Z]:\\RECYCLER\\S" /C:"[A-Z]:\\$RECYCLE.BIN\\S" "%$LST%"') Do (
    Call :FileGetNewName "%%i" "%$DST%"
    Call :FileCopy "%%i"
)
If Exist "%$LST%" DEL /F /Q "%$LST%"

@Echo Работа скрипта завершена.
Exit

:FileCopy
:: ---
:: %1 - полное имя исходного файла, включая путь
:: ---
:: @Echo.%~1
Copy "%~1" "%FileGetNewName%" >Nul
GoTo :EOF

:FileGetNewName
:: ---
:: %1 - полное имя исходного файла, включая путь
:: %2 - путь к целевому каталогу
:: ---
Set $I=
Set FileGetNewName=

If Not Exist "%~1" GoTo :EOF
For %%i In ("%~1") Do Set $N=%%~ni
For %%i In ("%~1") Do Set $X=%%~xi

:FileGetNewName_LOOP

Set FileGetNewName=%~2\%$N%%$I%%$X%
If Not Exist "%FileGetNewName%" GoTo :EOF
Set /A $I +=1
GoTo FileGetNewName_LOOP

Последний раз редактировалось amel27, 18-10-2008 в 09:29.

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:51, 15-10-2008 | #379