Показать полную графическую версию : [решено] Цикл FOR где ошибка?что не так?
Всем привет!
Почему пропадает значение переменной %nm% при переходе в другой for
значение обнуляется...
Вот код
@Echo On
setlocal enableextensions enabledelayedexpansion
Set Folder=E:\Projects\upd\foldx
Set OutFolder=E:\Projects\upd\in
Set txt_list=E:\Projects\upd\copy.txt
For /F %%i In (%txt_list%) Do (
Set nm=%%i
for /f "tokens=*" %%a in ('Dir /b/s/a-d %Folder%\*%nm%*.*') Do (Set $Path=%%a & goto :copy)
)
:copy
xcopy /l /h /t "%$Path%" "%OutFolder%\*"
Pause
Exit
Помогите))Подправте код,а если можно то еще и объясните причину.
Foreigner
01-07-2013, 19:07
1. Зачем эта переменная вообще? Используйте переменную первого цикла %%i
2. Или соблюдайте синтаксис, переменная должна выглядеть так !nm!
Пути заработали но как от %$Path% отсечь %Folder% и прибавить к %OutFolder%
Если математически то так
(%OutFolder%+(%$Path% - %Folder%))
Если наглядно то так
E:\Projects\upd\in + (E:\Projects\upd\foldx\new\1\AB12345.exe - E:\Projects\upd\foldx\new) = E:\Projects\upd\in + \new\1\AB12345.exe
Ведь для копирования нужны абсолютные пути...
@Echo On
setlocal enableextensions enabledelayedexpansion
Set Folder=E:\Projects\upd\foldx
Set OutFolder=E:\Projects\upd\in
Set txt_list=E:\Projects\upd\copy.txt
For /F %%i In (%txt_list%) Do (
Set nm=%%i
for /f "tokens=*" %%a in ('Dir /b/s/a-d %Folder%\*!nm!*.*') Do (Set $Path=%%a & goto :copy)
)
:copy
xcopy /l /h /t "%$Path%" "%OutFolder%\"
Pause
Exit
Foreigner
01-07-2013, 22:50
nfs911,
Мне не совсем понятно, что надо копировать, nm, как я понял какая-то часть названия файла?
Ну так зачем его тогда искать? Если xcopy это умеет.
@echo off
setlocal
pushd "E:\Projects\upd\foldx"
for /f %%i in (..\copy.txt) do xcopy /s /l /h *%%i*.* "E:\Projects\upd\in\"
popd
Как-то так, не проверял - xcopy скопирует файлы, подходящие под маску *%%i*.* с путями, начиная с текущей папки "E:\Projects\upd\foldx"
Ведь для копирования нужны абсолютные пути... »
Строго говоря — нет, не нужны. Точно так же можно использовать и относительные пути.
Foreigner, работает ваш код.Написано что файл скопирован но папка пуста
Foreigner
01-07-2013, 23:49
nfs911, Ну так убери ключик /l
Foreigner, благодарю
я думал что выводит для наглядности а оказывается в холостую))
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.