我的目标是编写一个批处理文件以将第5个字符串复制到文本文件中,然后创建一个以该字符串为文件名的文件。
到目前为止,这里是我所拥有的,但是它只是创建了一个new.txt
文件,其中包含字符串。
@echo off
setlocal enableextensions
set "source=C:\Users\Sinis\Desktop\newtest\*.txt"
set "target=C:\Users\Sinis\Desktop\newtest\"%%b.txt"
pushd "%source%"
set name =%%a
(
for /f "tokens=1,* delims=:" %%a in ('findstr /i /l /c:"Name" "*.txt"') do (
echo(%%b
)
) > "%target%"
popd
答案 0 :(得分:0)
这是一个完整的batch-file示例,另外还有递归请求:
@Set "source=%UserProfile%\Desktop\newtest"
@PushD "%source%" 2>NUL || Exit /B
@For /F "Tokens=1,2*Delims=:" %%G In (
'FindStr /IRS "\<Name\>" "%source%\*.txt" 2^>NUL'
) Do @For /F Tokens^=5EOL^= %%J In ("%%I") Do @Break>"%%~J.txt" 2>NUL
@PopD
请注意,这是假定您的包含不区分大小写的单词Name
的行以空格分隔,用于确定第五个字符串。同样,任何匹配行上的任何第五个字符串也不应包含对文件名无效的任何字符。
但是,您在注释中的示例使我感到困惑,因为它使用整行作为文件名,并将该行写入文件。如果要将第五个字符串写入文件名和文件,则可以尝试将@Break>"%%~J.txt" 2>NUL
替换为@(Echo(%%J)>"%%~J.txt"