Как мога да накарам партиден файл на Windows да преглежда стотици папки и да премества файлове на базата на list.txt?

Изглежда не мога да накарам това да работи. Имам нужда от пакетен файл, за да премина през куп папки с файлове в тях и да ги преместя в папки, посочени в списъка .txt.

По принцип искам да направи следното: примерен list.txt

folder1 file1
folder2 file1

и анализирайте това, така че да мога:

copy C:\folder1\file1*.txt to destination folder
copy C:\folder2\file1*.txt to destination folder
etc

Ето какво имам досега:

Основна програма:

echo off
set lines=0

for /f "tokens=1 delims=" %%a in (%CD%\list.txt) do (
                echo %%a
                echo 1 %SN% from EEN %EEN%               
                call :first %%a
                echo 2 %SN% from EEN %EEN%               
                call :second %%a
                echo 3 %SN% from EEN %EEN%               
                set /a lines+=1
)

echo %lines%
pause
goto :eof

:first
set EEN=%1
goto :eof

:second
set SN=%2
goto :eof

pause

list.txt (първата колона е името на папката, втората е името на файла):

DM5V37H WMC1F0077774
DM5V37H WMC1F0077711
DM5V37H WMC1F0086480
DM5V37H WMC1F0086372
DM5V37H WMC1F0077655
DM5V37H WMC1F0077770

какво правя грешно


person Duxa    schedule 12.10.2012    source източник
comment
Обмисляли ли сте вместо това да използвате powershell за това?   -  person David    schedule 12.10.2012
comment
Не съм много запознат с PowerShell (използвах го само за Exchange и MS сървъри). Това нещо не може ли да се направи поради ограничения на пакета?   -  person Duxa    schedule 12.10.2012
comment
Сигурен съм, че в крайна сметка можете да го разберете. Просто мисля, че би било много по-лесно да се пише и отстранява грешки в PowerShell. Вероятно бихте могли да използвате една четвърт от редовете по-горе. Изглежда, че вече имате добър старт с опита си с Exchange и т.н. Има много добра справочна информация и уроци онлайн, включително в stackoverflow. Опитай!   -  person David    schedule 12.10.2012
comment
Добре, ще опитам! Благодаря.... тъй като опитът ми с PowerShell е в прозореца на Exchange Powershell... как изобщо да го изпълня? В какво е най-добре да го напиша? Току-що използвах Notepad преди (или Notepad++). Всеки съвет се оценява.   -  person Duxa    schedule 12.10.2012
comment
Уверете се, че имате инсталиран powershell. Ако използвате Win 7, той е инсталиран със системата. Ако използвате XP, тогава ще трябва да изтеглите и инсталирате от Microsoft. Можете да създавате скриптове във всеки текстов редактор, точно като групови файлове. Единствената разлика е, че го записвате с разширение .ps1. След това стартирайте powershell. В моята система се намира в Start=>Programs=>Accessories=>WindowsPowershell. Използвайте команди за навигация, за да отидете до вашия скрипт, след което го стартирайте, точно както бихте направили пакетен файл. Можете също да въвеждате команди директно в командния ред.   -  person David    schedule 12.10.2012
comment
Ето публикация във форума който обсъжда вашия проблем.   -  person David    schedule 12.10.2012
comment
Ето един добър урок за powershell.   -  person David    schedule 12.10.2012


Отговори (1)


Не съм сигурен за вашите препратки към SN и EEN, но току-що тествах това и изглежда, че работи. Първият раздел е демонстрация как да получите достъп до всеки елемент в ред, прочетен от файла, след което се извършва действителната операция по преместване. Сигурен съм, че можете да го модифицирате според вашите нужди.

@echo off
set lines=0

for /f "tokens=1,2 delims= " %%a in (list.txt) do echo %%a %%b&set /a lines+=1
echo Number of lines: %lines%

:: Perform move operation.  
for /f "tokens=1,2 delims= " %%a in (list.txt) do (
if not exist %%a (md %%a)
move "%%b" "%%a\%%b"
)
person Derek    schedule 23.10.2012