使用批处理来读取文件的某个部分并创建变量

时间:2014-09-09 12:44:50

标签: regex batch-file findstr

我已经阅读了很多内容,但我无法理解这一点。这可能是因为我是一个新手。

我想做的是:

我有一个名为start.txt的文件,内容为

..\dll | toapp.exe "..\posdata\filename.xml" "..\OUT" "..\TEMP" 

我想在批处理文件中读取它的内容,并仅将filename.xml作为变量。从网络中的设备到设备,它会发生变化。

然后我会使用该变量将文件从一台机器复制到另一台机器,但我只想要一个文件而且我无法确定它是什么start.txt。我可以做所有的复制和检查,以确保它在正确的位置,但不是findtr部分。

任何想要理解的想法都会很棒

2 个答案:

答案 0 :(得分:1)

@echo off
set "start_file=start.txt"
for /f tokens^=5^ delims^=\^" %%# in ('type "%start_file%"^|find /i "..\posdata"') do set "xml_file=%%#"

echo %xml_file%

您的问题有点不清楚。这是文件中唯一的一行吗?这是确切的内容吗?如何识别文件中的行?

如果只有一行带有“.. \ postdata”字符串,并且内容与所讨论的内容完全一致,则上述脚本将起作用。

修改涵盖两种情况:

@echo off
setlocal 
set "start_file=start.txt"
set "xml_file="
for /f tokens^=5^ delims^=\^" %%# in ('type "%start_file%"^|find /i "..\posdata"^|find /i /v "-storedbpath"') do set "xml_file=%%#"
if not defined xml_file (

    for /f "usebackq tokens=9" %%# in ("%start_file%") do (
        set "xml_file=%%~#"
    )
)
echo %xml_file%

答案 1 :(得分:0)

发短信:

for /f "usebackq tokens=4" %%a in ("start.txt") do echo %%~nxa