Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
Windows `)`在这个时候是出乎意料的。_Windows_Batch File_Windows 7 - Fatal编程技术网

Windows `)`在这个时候是出乎意料的。

Windows `)`在这个时候是出乎意料的。,windows,batch-file,windows-7,Windows,Batch File,Windows 7,我在Windows 7上运行批处理文件时遇到此错误(我已将错误缩小到以下行): 其中,Regval是给定软件的文件路径,在本例中(在我的Win7机器上)是: 这个脚本曾经在Windows Vista上运行,尽管我怀疑现在的RegVal中可能有一个括号,因为它以前是在我以前的Vista机器上运行的C:\Program Files\SAS 9.2_M3\u 10w37\SASFoundation\。我建议您创建一个值为RegVal的文件,然后使用FOR循环解析它: echo %RegVal%>

我在Windows 7上运行批处理文件时遇到此错误(我已将错误缩小到以下行):

其中,Regval是给定软件的文件路径,在本例中(在我的Win7机器上)是:


这个脚本曾经在Windows Vista上运行,尽管我怀疑现在的RegVal中可能有一个括号,因为它以前是在我以前的Vista机器上运行的
C:\Program Files\SAS 9.2_M3\u 10w37\SASFoundation\

我建议您创建一个值为
RegVal
的文件,然后使用
FOR
循环解析它:

echo %RegVal%>C:\SomeFile.txt
FOR /F "delims=" %%I in (C:\SomeFile.txt) do set sasroot=%%~sI
这会帮助你解决你的问题


Stephan的解决方案简单得多,但我还是会解释我的解决方案,这在某些情况下可能会很有用

FOR
命令使用命令解析
in
部分中指定的数据时,它会用命令的结果替换该命令,然后运行
FOR
命令。例如,对于上面的问题,展开
echo%RegVal%
后将执行的
For
命令是:

FOR /F "delims=" %%I in (C:\Program Files\SAS 9.2_M3_10w37\SASFoundation\9.2(32-bit)) do set sasroot=%%~sI
因此,当解析器点击第一个右括号时,它将停止,认为它之前读取的所有内容都是要处理的文本。但是,在这种情况下,这是错误的,因为第一个右括号是要读取的字符串的一部分;它并不表示字符串的结尾


当使用
FOR
命令解析文件时,它将读取每一行,用正确的值分配预定义的标记,然后执行下面的代码块。冲洗并重复文件中的每一行。但是在这种情况下,它不会用每一行替换中的
;它将只解析它并为令牌赋值。这就是为什么特殊字符(如括号)在这种情况下不会产生解析错误的原因。

我建议您创建一个文件,其中的值为
RegVal
,然后使用
FOR
循环对其进行解析:

echo %RegVal%>C:\SomeFile.txt
FOR /F "delims=" %%I in (C:\SomeFile.txt) do set sasroot=%%~sI
这会帮助你解决你的问题


Stephan的解决方案简单得多,但我还是会解释我的解决方案,这在某些情况下可能会很有用

FOR
命令使用命令解析
in
部分中指定的数据时,它会用命令的结果替换该命令,然后运行
FOR
命令。例如,对于上面的问题,展开
echo%RegVal%
后将执行的
For
命令是:

FOR /F "delims=" %%I in (C:\Program Files\SAS 9.2_M3_10w37\SASFoundation\9.2(32-bit)) do set sasroot=%%~sI
因此,当解析器点击第一个右括号时,它将停止,认为它之前读取的所有内容都是要处理的文本。但是,在这种情况下,这是错误的,因为第一个右括号是要读取的字符串的一部分;它并不表示字符串的结尾


当使用
FOR
命令解析文件时,它将读取每一行,用正确的值分配预定义的标记,然后执行下面的代码块。冲洗并重复文件中的每一行。但是在这种情况下,它不会用每一行替换
中的
;它将只解析它并为令牌赋值。这就是为什么特殊字符(如括号)在这种情况下不会产生解析错误的原因。

我建议您创建一个文件,其中的值为
RegVal
,然后使用
FOR
循环对其进行解析:

echo %RegVal%>C:\SomeFile.txt
FOR /F "delims=" %%I in (C:\SomeFile.txt) do set sasroot=%%~sI
这会帮助你解决你的问题


Stephan的解决方案简单得多,但我还是会解释我的解决方案,这在某些情况下可能会很有用

FOR
命令使用命令解析
in
部分中指定的数据时,它会用命令的结果替换该命令,然后运行
FOR
命令。例如,对于上面的问题,展开
echo%RegVal%
后将执行的
For
命令是:

FOR /F "delims=" %%I in (C:\Program Files\SAS 9.2_M3_10w37\SASFoundation\9.2(32-bit)) do set sasroot=%%~sI
因此,当解析器点击第一个右括号时,它将停止,认为它之前读取的所有内容都是要处理的文本。但是,在这种情况下,这是错误的,因为第一个右括号是要读取的字符串的一部分;它并不表示字符串的结尾


当使用
FOR
命令解析文件时,它将读取每一行,用正确的值分配预定义的标记,然后执行下面的代码块。冲洗并重复文件中的每一行。但是在这种情况下,它不会用每一行替换
中的
;它将只解析它并为令牌赋值。这就是为什么特殊字符(如括号)在这种情况下不会产生解析错误的原因。

我建议您创建一个文件,其中的值为
RegVal
,然后使用
FOR
循环对其进行解析:

echo %RegVal%>C:\SomeFile.txt
FOR /F "delims=" %%I in (C:\SomeFile.txt) do set sasroot=%%~sI
这会帮助你解决你的问题


Stephan的解决方案简单得多,但我还是会解释我的解决方案,这在某些情况下可能会很有用

FOR
命令使用命令解析
in
部分中指定的数据时,它会用命令的结果替换该命令,然后运行
FOR
命令。例如,对于上面的问题,展开
echo%RegVal%
后将执行的
For
命令是:

FOR /F "delims=" %%I in (C:\Program Files\SAS 9.2_M3_10w37\SASFoundation\9.2(32-bit)) do set sasroot=%%~sI
因此,当解析器点击第一个右括号时,它将停止,认为它之前读取的所有内容都是要处理的文本。但是,在这种情况下,这是错误的,因为第一个右括号是要读取的字符串的一部分;它并不表示字符串的结尾

当使用
FOR
命令解析文件时,它将读取每一行,用正确的值分配预定义的标记,然后执行下面的代码块。冲洗并重复文件中的每一行。但是在这种情况下,它不会用每一行替换
中的
;它将只解析它并为tok赋值