2013-04-02 4 views
0

Мне по существу нужно получить список имен файлов из каталога из командной строки Windows и взять каждое имя файла и объединить его с другим оператором командной строки.Присоединение к операторам командной строки

D:\Data 
file1.txt 
file2.txt 

объединить файл с:

copy file1.txt file3.txt 
copy file2.txt file4.txt 

Я знаю, что выше, возможно, не имеет смысла. Я пытаюсь понять концептуально, как выполнить задачу. Любая помощь приветствуется.

ответ

0

Этот for будет перебирать все файлы в d: \ data и выписывать что-то вроде copy file1.txt targetname.txt для каждого из них. Я не знаю, как вы хотите сформировать имя целевого файла, но я думаю, что это может по крайней мере ответить на ваш вопрос о том, как сделать что-то с каждым файлом в папке.

setlocal enabledelayedexpansion 
for /f %%f in ('dir "d:\data" /b /a-d') do (
    set filename=%%f 
    echo Do something with !filename! 
) 
+0

Спасибо за помощь. Кажется, это не работало для меня. Я действительно не хочу копировать содержимое каждого файла. Я просто хочу скопировать имя файла в переменную и выполнить другую команду, используя имя файла. Извините за путаницу. – Villumanati

+0

Хорошо, я обновил образец кода. Теперь мы включаем замедленное расширение, так что в цикле 'for' вы можете сделать' set' для установки переменной среды, а затем обратиться к нему с использованием замедленного расширения: '! Filename!' –

0

Предполагая, вы file1.txt ... file4.txt в текущем каталоге, попробуйте следующее:

@echo off &setlocal enabledelayedexpansion 
for /f "delims=" %%i in ('dir /a-d /b /on file?.txt') do (
    set "file1=!file2!" 
    set "file2=!file3!" 
    set "file3=%%~i" 
    if not "!file1!"=="" echo copy !file1! !file3! 
) 

Выход:

copy file1.txt file3.txt 
copy file2.txt file4.txt