这是我的TXT文件:
Volume in drive N is ABSdrive
Volume Serial Number is BLA - BLA
Directory of n:\ggg\gggg\ggg\ggggg
25/10/2016 09:46 138,813 gggggg.csv
1 File(s) 00000 bytes
0 Dir(s) 00000000 bytes free
我需要的是仅包含此行的.txt文件
25/10/2016 09:46 138,813 gggggg.csv
顶部或底部没有空行仅包含带有此信息的单行文本文件。
是否可以通过使用.bat文件来制作它?
答案 0 :(得分:5)
findstr /r /c:"^[0-9]" yourfile.txt > targetfile.txt
这个以数字开头的行,因为这是你在问题中所需要的。
答案 1 :(得分:0)
您可以使用findstr命令并将输出写入新文本文件outfile.txt 然后,您可以在文件中搜索该确切的字符串。但是,如果搜索到的字符串与该行完全匹配,则只会将输出写入文件。
findstr /x "25/10/2016 09:46 138,813 gggggg.csv" infile.txt > outfile.txt
有关findstr命令的更多信息,我建议打开一个新的cmd并输入
findstr /?
希望这有帮助
答案 2 :(得分:0)
将文件夹拖放到此批处理文件中。
@Echo Off
Set "SrcDir=%~1"
If Not Defined SrcDir Set "SrcDir=%CD%"
(For /F EOL^=^ Delims^=^^ %%A In ('Dir/A-D "%SrcDir%"') Do Echo=%%A)>output.txt
它应该将output.txt文件输出到该文件夹。 (如果没有给出输入文件夹,那么它应该将output.txt提供给当前目录)。
如果您只想解析文件中的数据,请按照以下方式进行调整:
@Echo Off
Set "SrcFile=%~1"
If Not Defined SrcFile Exit/B
(For /F UseBackQEOL^=^ Delims^=^^ %%A In ("%SrcFile%") Do Echo=%%A)>output.txt
只需将文件拖放到其上或调整它以将%~1替换为第二行的文件路径/名称。
答案 3 :(得分:0)
使用for /F
loop解析文字:
@echo off
for /F "usebackq skip=5 delims=" %%E in ("\path\to\your\text\file.txt") do (
set "LINE=%%E"
goto :EXIT_FOR
)
:EXIT_FOR
echo %LINE%
skip=5
选项告诉for /F
忽略前五行。在读取第一个非跳过的行之后,goto
命令离开循环。因此,变量LINE
最终将保留感兴趣的线。
您还可以检查是否已定义变量,而不是使用goto
来选择一行特定文本,如下所示:
@echo off
set "LINE="
for /F "usebackq skip=5 delims=" %%E in ("\path\to\your\text\file.txt") do (
if not defined LINE set "LINE=%%E"
)
echo %LINE%
文本文件内容看起来像dir
命令的输出(类似dir "n:\ggg\gggg\ggg\ggggg\gggggg.csv"
)。您可以直接通过for /F
解析此类命令输出,而不必先将其存储到文本文件中 - 请参阅:
@echo off
for /F "skip=5 delims=" %%E in ('dir "n:\ggg\gggg\ggg\ggggg\gggggg.csv"') do (
set "LINE=%%E"
goto :EXIT_FOR
)
:EXIT_FOR
echo %LINE%
或者:
@echo off
set "LINE="
for /F "skip=5 delims=" %%E in ('dir "n:\ggg\gggg\ggg\ggggg\gggggg.csv"') do (
if not defined LINE set "LINE=%%E"
)
echo %LINE%