尝试创建批处理文件以从txt文件复制第5个字符串并创建以字符串为文件名的txt文件

时间:2020-01-26 10:22:21

标签: batch-file

我的目标是编写一个批处理文件以将第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

1 个答案:

答案 0 :(得分:0)

这是一个完整的示例,另外还有递归请求:

@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"

相关问题