batch - echo for do in for循环

时间:2016-02-12 11:17:26

标签: batch-file cmd scripting windows-scripting

我无法使用for / r在同一行输出2个值。 for循环是:

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命令尾,它允许你检索一些&#39; n&#39;从指定文件的底部开始的行(在这种情况下,指定的文件是C:\ users \ usernameA \ desktop \ folderABC \ %% ~nF.txt)。

提前致谢

2 个答案:

答案 0 :(得分: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附加到给定的输出文件(对于两个单独的重定向,其名称似乎不同在你的问题中。)

答案 1 :(得分:-1)

如果使用'&gt;'指示命令输出或'&gt;&gt;'对于文件,它将始终以行尾字符终止。因此,您必须创建一个组合两个输出的变量,然后将变量回显到文件中。但是,您的第二个输出是由命令生成的,因此无法将其存储在变量中。这是Windows批处理的限制。总之,您当前的问题仅使用批处理脚本是不可解决的。