Как заставить пакетный файл 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++). Любые советы приветствуются.   -  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