Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parsing 将文件读入变量_Parsing_Batch File - Fatal编程技术网

Parsing 将文件读入变量

Parsing 将文件读入变量,parsing,batch-file,Parsing,Batch File,我需要用批处理代码解析一个文件。我的档案里有两条信息 完全限定源目录(即//server/share/folder) 完全限定目标目录 这些将以单独的行写入文件 在批处理脚本中,我需要读取文件并将这两行放入两个不同的变量(src_dir、tgt_dir)。如果制表符或分隔符更好,我可以毫无问题地更改分隔符 我正在阅读关于使用for/f etc的文章,但我不明白它是如何工作的。 谢谢你的指点 您需要做的是解析批处理代码,并将其读入2个变量中您需要做的是解析批处理代码,并将其读入2个变量中您需要

我需要用批处理代码解析一个文件。我的档案里有两条信息

  • 完全限定源目录(即//server/share/folder)
  • 完全限定目标目录
这些将以单独的行写入文件

在批处理脚本中,我需要读取文件并将这两行放入两个不同的变量(src_dir、tgt_dir)。如果制表符或分隔符更好,我可以毫无问题地更改分隔符

我正在阅读关于使用
for/f etc
的文章,但我不明白它是如何工作的。
谢谢你的指点

您需要做的是解析批处理代码,并将其读入2个变量中

您需要做的是解析批处理代码,并将其读入2个变量中

您需要做的是解析批处理代码,并将其读入2个变量中

您需要做的是解析批处理代码,并将它们读入2个变量中

set "src_dir="
set "tgt_dir="
for /f "tokens=* usebackq" %%a in ("c:\somewhere\myfile.txt") do (
  if not defined src_dir ( 
    set "src_dir=%%~a" 
  ) else if not defined tgt_dir (
    set "tgt_dir=%%~a"
  )
)
echo %src_dir%
echo %tgt_dir%
for
中,
/f
表示要处理文件内容或命令输出

tokens=*
for
命令指示不应在行上进行拆分

usebackq
for
命令指示反引号字符串是要执行的命令,引号字符串是要读取的文件

对于读取的每一行,将执行括号中的代码,确定两个变量中的哪一个应接收读取的值

for
中,
/f
表示要处理文件内容或命令输出

tokens=*
for
命令指示不应在行上进行拆分

usebackq
for
命令指示反引号字符串是要执行的命令,引号字符串是要读取的文件

对于读取的每一行,将执行括号中的代码,确定两个变量中的哪一个应接收读取的值

for
中,
/f
表示要处理文件内容或命令输出

tokens=*
for
命令指示不应在行上进行拆分

usebackq
for
命令指示反引号字符串是要执行的命令,引号字符串是要读取的文件

对于读取的每一行,将执行括号中的代码,确定两个变量中的哪一个应接收读取的值

for
中,
/f
表示要处理文件内容或命令输出

tokens=*
for
命令指示不应在行上进行拆分

usebackq
for
命令指示反引号字符串是要执行的命令,引号字符串是要读取的文件


对于读取的每一行,将执行括号中的代码,确定两个变量中的哪一个应接收读取的值。

For/F不是这种情况下的最佳选项。我将按以下方式解决问题:

<"yourFile.txt" (
  set /p "src_dir="
  set /p "tgt_dir="
)

:: Show result
echo src_dir=%src_dir%
echo tgt_dir=%tgt_dir%
然后,您可以使用以下非常简单的脚本来读取这些值。如果添加其他变量,则脚本不必更改

for /f "usebackq delims=" %%A in ("pathSpecForYourDataFile") do set "%%A"

在这种情况下,FOR/F不是最佳选项。我将按以下方式解决问题:

<"yourFile.txt" (
  set /p "src_dir="
  set /p "tgt_dir="
)

:: Show result
echo src_dir=%src_dir%
echo tgt_dir=%tgt_dir%
然后,您可以使用以下非常简单的脚本来读取这些值。如果添加其他变量,则脚本不必更改

for /f "usebackq delims=" %%A in ("pathSpecForYourDataFile") do set "%%A"

在这种情况下,FOR/F不是最佳选项。我将按以下方式解决问题:

<"yourFile.txt" (
  set /p "src_dir="
  set /p "tgt_dir="
)

:: Show result
echo src_dir=%src_dir%
echo tgt_dir=%tgt_dir%
然后,您可以使用以下非常简单的脚本来读取这些值。如果添加其他变量,则脚本不必更改

for /f "usebackq delims=" %%A in ("pathSpecForYourDataFile") do set "%%A"

在这种情况下,FOR/F不是最佳选项。我将按以下方式解决问题:

<"yourFile.txt" (
  set /p "src_dir="
  set /p "tgt_dir="
)

:: Show result
echo src_dir=%src_dir%
echo tgt_dir=%tgt_dir%
然后,您可以使用以下非常简单的脚本来读取这些值。如果添加其他变量,则脚本不必更改

for /f "usebackq delims=" %%A in ("pathSpecForYourDataFile") do set "%%A"


我试了一下。src_dir显示正确,但target_dir没有,你知道为什么吗?@staples89-没有更多信息。您所说的未正确显示是什么意思?如果没有值,则可能有银行行必须使用额外的SET/P进行核算。如果值不正确,则应显示正确的值与您得到的值。但是这种技术应该是非常可靠的。我的输出是这样的:src_dir=\\server\share\folder tgt_dir='我将向你们两个提出这个问题——在不久的将来,我将有一个文件,其中包含8或9行不同的行,我需要将它们放入不同脚本中的变量中。在您的方法中,我只添加行,(set/p“var=”)不是吗?我希望我能把这两个标记为好答案…@staples89-那么在源代码和目标代码之间可能会有一行或多行空行。您需要跳过空行,对每个空行使用
set/p=
。MC-ND解决方案会起作用,因为FOR/F总是跳过空行。src_dir显示正确,但target_dir没有,你知道为什么吗?@staples89-没有更多信息。您所说的未正确显示是什么意思?如果没有值,则可能有银行行必须使用额外的SET/P进行核算。如果值不正确,则应显示正确的值与您得到的值。但是这种技术应该是非常可靠的。我的输出是这样的:src_dir=\\server\share\folder tgt_dir='我将向你们两个提出这个问题——在不久的将来,我将有一个文件,其中包含8或9行不同的行,我需要将它们放入不同脚本中的变量中。在您的方法中,我只添加行,(set/p“var=”)不是吗?我希望我能把这两个标记为好答案…@staples89-那么在源代码和目标代码之间可能会有一行或多行空行。您需要跳过空行,对每个空行使用
set/p=
。MC ND解决方案将起作用