Batch file 如何仅从测试文件中的一行为/F令牌分配?
如何使它仅从.txt文件的第一行获取令牌,而不是在每一行中循环。我希望%%m被分配到第1行的第3个令牌,然后停止Batch file 如何仅从测试文件中的一行为/F令牌分配?,batch-file,for-loop,line,token,Batch File,For Loop,Line,Token,如何使它仅从.txt文件的第一行获取令牌,而不是在每一行中循环。我希望%%m被分配到第1行的第3个令牌,然后停止 @echo off FOR %%A IN (.\xdrive\*.txt) DO ( FOR /F "usebackq tokens=3 delims=," %%m IN ("%%A") DO ( IF "%%m" == "F01" (xcopy /Y "%%A" .\Outbound) pause ) ) pause 请参阅这篇文章,它展示了如何使用dos
@echo off
FOR %%A IN (.\xdrive\*.txt) DO (
FOR /F "usebackq tokens=3 delims=," %%m IN ("%%A") DO (
IF "%%m" == "F01" (xcopy /Y "%%A" .\Outbound)
pause
)
)
pause
请参阅这篇文章,它展示了如何使用dos批处理文件模拟gnu
head
实用程序:
如果看不到eg文件,也不知道你想做什么,我无法测试,但下面列出了
firstline.bat
,它应该满足你的要求:)起初我认为这需要比现在更复杂。。。在你的第一个if之后,在它的第一个调用问题解决之后,简单地使用goto退出for结构
@echo off
::: firstline.bat - Retrieve the first line from a series of files
::: usage: firstline $filespec
::: filespace - files to process (eg .\xdrive\*.txt)
if "%~1"=="" findstr "^:::" "%~f0"&GOTO:EOF
FOR %%A IN (%1) DO (
call :testfirst "%%A"
)
goto :eof
:testfirst
FOR /F "usebackq tokens=3 delims=," %%m IN (%1) DO (
IF "%%m" == "F01" (xcopy /Y %1 .\Outbound)
goto:eof
)
set/p
可用于读取第一行,然后可使用FOR/F循环获取第三个令牌
setlocal EnableDelayedExpansion
FOR %%A IN (%1) DO (
<%%A set /p firstline=
FOR /F "tokens=3 delims=," %%m IN ("!firstline!") DO (
echo %%m
)
)
setlocal EnableDelayedExpansion
对于(%1)中的%%A,请执行以下操作(
未经测试
读取第一行标记3
for /f "tokens=3 delims=," %%a in ('"findstr /n . %1|findstr /b 1:"') do set fltok3=%%a
echo(%fltok3%
粗俗的=
@echo off
FOR %%A IN (.\xdrive\*.txt) DO (
FOR /F "usebackq tokens=3 delims=," %%m IN ("%%A") DO (
IF "%%m" == "F01" (xcopy /Y "%%A" .\Outbound)
GOTO:EOF
)
)
因此,您所要做的就是在第一次通过后逃离循环,而不是继续到下一行。转到下一行
不仅断开内部循环,而且断开了:下一个
标签刚好在结束括号之前导致语法错误谢谢,这看起来很好。(%1)如何处理知道如何查找我的*.txt吗?因为.\xdrive*.txt被替换为%1它如何知道读取文本文件?@jeb-Arg不测试的危险!用函数调用很容易解决;){Updated}@user910557%1是对调用批处理文件的第一个参数的引用。如果您确实复制了上述代码,请将其保存到firstline.bat
并执行它,它会告诉您需要提供一个参数(filespec),在您的情况下,您希望将其称为>firstline。\xdrive\*.txt
。因此,如果我有多个文件要传递给它以读取第一行,我是否需要在开头添加另一个For语句,并调用传递参数的批处理?非常好,我也在考虑SET/P
。谢谢你帮我省去了用它找出实际解决方案的麻烦!:)谢谢你。相同的关于变量扩展或%1,我一定有什么不明白的地方。I%1是什么?此脚本如何知道如何读取.txt文件?我已经研究过了,但我能说的关于%1%2的一切。。。。它们表示第一个和第二个参数。不确定这是一行还是一个变量,也不确定它与源*.txt文件的关系。Thx再次:)