我遇到了批处理问题,我无法支持它。我搜索谷歌和Stack Overflow几个小时,现在我自己问这个问题,因为似乎没有人有这个问题,或者我根本无法找到它。我甚至在谷歌搜索了最后的结果页面(!)。
所以我编写了一个批处理文件,它自动从服务器中提取文件名,并将它们与文件路径一起放入文本文件中。现在我有一个看起来大致如下的文件:
q:\0003730310008520150610120508\1_PY98200_00084_00085_09_20150610_140447.antfzg
q:\000649A7B0008520150630085701\1_KP40610_00084_00085_09_20150630_105647.antfzg
q:\000649A7B0008520150630085701\1_KP40610_00084_00085_09_20150630_110508.antfzg
q:\00161083B0008520150429065335\1_J281516_00084_00085_09_20150429_085326.antfzg
q:\00161083B0008520150429122000\1_PV92717_00084_00085_09_20150429_141952.antfzg
q:\00161083B0008520150515065834\1_VY65621_00084_00085_09_20150515_085802.antfzg
q:\00161083B0008520150527075722\1_D894693_00084_00085_09_20150527_095704.antfzg
q:\00161083B0008520150602075809\1_L893216_00084_00085_09_20150602_095757.antfzg
q:\00161083B0008520150608082553\1_VT04798_00084_00085_09_20150608_102033.antfzg
q:\00161083B0008520150610080050\1_LF22563_00084_00085_09_20150610_100016.antfzg
q:\00161083B0008520150623132003\1_VN57593_00084_00085_09_20150623_151927.antfzg
现在,我想搜索第一个示例中的特定文章编号:PY98200
(1_
后面的部分)。如果在文件中找到了该文件,请将包含该字符串的整行复制到新变量或新文本文件中。如果数字存在多次,那么也应该复制所有行。
我尝试了不同的 for 循环,但我失败了,因为我不熟悉批量编码。
答案 0 :(得分:0)
npocmaka发布的此任务的命令行是:
type "original_text_file.txt" | %SystemRoot%\System32\find.exe "PY98200" > "new_text_file.txt"
它如何运作?
type是命令处理器cmd.exe
的内部命令,它将文本文件的内容输出到标准输出(标准输出),通常显示在控制台窗口中。< / p>
类型的输出为piped,类型的 stdout 为|
stdin < / strong>(标准输入)标准Windows控制台应用程序查找。
find是一个非常小的控制台应用程序,用于在文本文件的行中查找简单的非正则表达式字符串,默认情况下输出到 stdout 包含搜索字符串的所有行。用于在文件中查找字符串的功能更强大的控制台应用程序是findstr。但查找也具有此任务所需的功能。
查找的输出会被>
重定向到当前目录中的文件new_text_file.txt
。
为什么不直接使用文本文件的名称调用查找?
%SystemRoot%\System32\find.exe "PY98200" "original_text_file.txt" > "new_text_file.txt"
使用上面的命令行查找还会输出一个空行,并在包含搜索字符串的行之前输出一行包含文件名的行。如果搜索多个文件包含字符串的行,这很有用,在输出中,知道哪些行来自哪个文件很重要。
但new_text_file.txt
应仅包含包含PY98200
的行,而不包含任何有关源的其他信息。因此,命令类型用于让查找通过 stdin 读取original_text_file.txt
的内容,这样可以避免打印两个标题行找到每个文件的输出到文件new_text_file.txt
。
此任务的备用命令行是:
%SystemRoot%\System32\findstr.exe /C:PY98200 "original_text_file.txt" > "new_text_file.txt"
有关已使用命令和控制台应用程序的更多详细信息,请打开命令提示符窗口,执行以下命令并将每个命令输出的所有帮助页面读入控制台窗口。
type /?
find /?
findstr /?
Windows输出的所有标准命令/控制台应用程序都有助于使用参数/?
运行它们,这对于某些命令比在线文档更准确。