我无法使用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)。
提前致谢
答案 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批处理的限制。总之,您当前的问题仅使用批处理脚本是不可解决的。