2016-02-12 8 views
0

Я не могу вывести 2 значения в одной строке, используя для/r. для цикла является:batch - echo multiple do in for loop

FOR /R C:\users\<user_name>\desktop\<folder_path> %%F in (*.*) do (
echo %%~nF >> C:\users\usernameA\desktop\test-forr.txt, #Output 1 
C:\folderB\tail -n 1 C:\users\usernameA\desktop\folderABC\%%~nF.txt >> C:\users\joseph.borg\desktop\test-forr.txt # Output 2 

Вопрос заключается в том, что этот цикл выводит выходные сигналы наверх друг от друга. Могу ли я разместить их в одной строке рядом друг с другом (на той же линии, разделенной запятой)?

Переменная %% ~ nf хранит имена текстовых файлов (без расширения) в том же каталоге. Строка C: \ folderB \ tail -n 1 относится к хвосту команды linux, который позволяет вам извлекать несколько строк «n», начиная со дна указанного файла (в этом случае указанным файлом является C: \ users \ usernameA \ рабочий стол \ folderABC \ %% ~ nF.txt).

Заранее спасибо

ответ

1
setlocal enabledelayedexpansion 
FOR /R C:\users\<user_name>\desktop\<folder_path> %%F in (*.*) do (
for /f %%a in ('C:\folderB\tail -n 1 C:\users\usernameA\desktop\folderABC\%%~nF.txt') do set "line=%%a" 
echo %%~nF,!line!>> C:\users\joseph.borg\desktop\test-forr.txt 
) 

Я не пробовал это, как я не tail, но он должен приложить filename,lastlineofthefile к данному выходному файлу (имя которого, как представляется, различны для двух отдельных перенаправлений в вашем вопросе.)

+0

Работает как шарм. Спасибо @Magoo – joebegborg07

-1

Если направить вывод команды с «>» или «>>» в файл, он всегда будет прекращено с конца строки. Поэтому вам нужно будет создать переменную, которая объединяет два выхода, а затем повторяет переменную в файле. Однако ваш второй вывод генерируется командой, поэтому нет способа сохранить его в переменной. Это ограничение количества окон. В заключение, ваша текущая проблема неразрешима, используя только пакетный скрипт.

+0

Можете ли вы порекомендовать, как я могу достичь этого по-другому? Моя цель: у меня есть несколько текстовых файлов в папке. Мне нужно создать новый текстовый файл, содержащий имя каждого текстового файла, за которым следует последняя строка в том же текстовом файле. – joebegborg07

+0

Ну, вы можете написать программу для этого. Вот один в C: – vapid

+0

Извините, но я не вижу его. – joebegborg07