基本上我正在尝试!var1:SomeText =!var2 !! 但是这段代码不起作用.我错过了什么?
variables substring batch-file delayedvariableexpansion windows-scripting
这不是很奇怪吗?.bat rem 命令有某种转义码吗?
文件.bat:
rem https://sourceforge.net/p/jedit/bugs/4084/?limit=25
Run Code Online (Sandbox Code Playgroud)
运行它:
C:\Users\admin>file.bat
25 was unexpected at this time.
C:\Users\admin>https://sourceforge.net/p/jedit/bugs/4084/?limit=25
Run Code Online (Sandbox Code Playgroud)
我没有看到任何错误级别。
如果我运行set如下:
C:\Users\vagrant>SET UNDEFINED=foo
C:\Users\vagrant>SET UNDEFINED
UNDEFINED=foo
C:\Users\vagrant>SET UNDEFINED
Environment variable UNDEFINED not defined
C:\Users\vagrant>SET UNDEFINED | more
UNDEFINED=foo
C:\Users\vagrant>SET UNDEFINED >nul
C:\Users\vagrant>SET UNDEFINED >nul
Environment variable UNDEFINED not defined
C:\Users\vagrant>SET UNDEFINED | more
Environment variable UNDEFINED not defined
C:\Users\vagrant>SET UNDEFINED >nul | more
Environment variable UNDEFINED not defined
C:\Users\vagrant>SET UNDEFINED >nul| more
C:\Users\vagrant>SET UNDEFINED 2>nul | more
C:\Users\vagrant>SET UNDEFINED 2>nul| more
UNDEFINED=foo
Run Code Online (Sandbox Code Playgroud)
注意,上面的第二个命令是SET UNDEFINED ,后面有两个空格。而且SET UNDEFINED >nul ,SET UNDEFINED >nul | more,SET UNDEFINED …
如何在批处理中读取和解析具有特殊字符的文件?我有一个名为test.txt的文本文件,只有foo!!!bar一个批处理文件:
@echo off
setlocal enabledelayedexpansion enableextensions
FOR /F "tokens=* delims=" %%a IN (.\test.txt) DO (
echo Unquoted is %%a
echo Quoted is "%%a"
set "myVar=%%a"
echo myVar is still !myVar! or "!myVar!"
)
exit /b 0
Run Code Online (Sandbox Code Playgroud)
我希望并期望它以foo!!!bar某种方式输出,但这输出:
Unquoted is foobar
Quoted is "foobar"
myVar is still foobar or "foobar"
Run Code Online (Sandbox Code Playgroud)
当然我可以type test.txt,但我想处理文件的每一行.
我之前的问题是从文本文件中提取多行,现在工作正常,但它仍然需要一些改进来修剪前导和尾随(棘手的部分)空格/制表符空间以及通过Stackoverflow搜索我找到了很多答案并让我结合起来我最后的批处理脚本,但是从所有人把它放在一起它可能不是那么正确.
Details.txt(源文件)
line not needed, Copy and help with these command prompt:
line not needed:
(whitespace)(whitespace)some text not needed Copy "c:\.." a b c(white space)
line not needed:
line not needed, Copy and help with these command prompt:
(whitespace)Copy "d:\.." a c c(tab space)
line not needed
(tab space)(tab space)Copy "e:\.." a a c(whitespace)
line not needed
Run Code Online (Sandbox Code Playgroud)
op.txt(输出文件)
Copy "c:\.." a b c
Copy "d:\.." a c c
Copy "e:\.." a a c
Run Code Online (Sandbox Code Playgroud)
让我们看看第一个批处理脚本.(没有修剪引线和轨迹空间)
@ECHO OFF …Run Code Online (Sandbox Code Playgroud) 我知道有类似的问题,但有一件事我在答案中找不到.我正在尝试将以下字符串传递给批处理文件:
hello " world
Run Code Online (Sandbox Code Playgroud)
这只是一个论点.这是我的批处理文件:
@echo off
@echo %1
Run Code Online (Sandbox Code Playgroud)
现在如果我从命令行运行它,我得到以下结果:
>C:\file.bat "hello "" world"
"hello "" world"
>C:\file.bat "hello \" world"
"hello \"
>C:\file.bat "hello """ world"
"hello """
Run Code Online (Sandbox Code Playgroud)
在所有情况下,我得到了错误的结果,如何逃避双引号并正确传递?或者我应该在批处理文件本身中执行任何其他转换步骤?
我想找到在特定工作站上运行的Outlook版本.如果我手动运行
wmic /node:"hostname" product where "Name like '%Office Outlook%'" get Name
Run Code Online (Sandbox Code Playgroud)
在命令行中,它的工作原理.但是如果我从批处理文件中运行它,它将返回"没有可用的实例".我甚至从批处理文件中删除了其他所有内容,所以只留下这一行 - 我仍然得到相同的结果.我错过了什么吗?
目前,我有以下文件:
脚本文件
type input1.csv | repl.bat " " "" >> output1.csv
type input2.csv | repl.bat " " "" >> output2.csv
type input3.csv | repl.bat " " "" >> output3.csv
Run Code Online (Sandbox Code Playgroud)
repl.bat 来源:https ://gist.github.com/wpsmith/8459524
我想把repl.bat的函数编译成Script.bat。
我试过:
:replscript
{repl content blah blah}
@exit /b
type input1.csv | replscript " " "" >> output1.csv
type input2.csv | replscript " " "" >> output2.csv
type input3.csv | replscript " " "" >> output3.csv
Run Code Online (Sandbox Code Playgroud)
但似乎它不起作用。
任何的想法?
[更新 1] 完整脚本如下(感谢@Jeb 的输入!)
@echo off
set "func=%~1"
if …Run Code Online (Sandbox Code Playgroud) 当我尝试
@echo off
set PTag=^<BR^>
echo %PTag%
Run Code Online (Sandbox Code Playgroud)
我什么都没有。
现在有趣的是,如果在最后一个回显之后有一个空行,我将得到:
The syntax of the command is incorrect.
Run Code Online (Sandbox Code Playgroud)
如果我删除@echo,那么它实际上输出
echo <BR>
Run Code Online (Sandbox Code Playgroud)
我想在变量内添加各种HTML标记,然后将这些变量连接起来以创建将在文件中输出的HTML。
我最近在文章“ 查找子字符串是否在字符串中(而不是在文件中)”中发现
@setlocal enableextensions enabledelayedexpansion
@echo off
set str1=%1
if not x%str1:bcd=%==x%str1% echo It contains bcd
endlocal
Run Code Online (Sandbox Code Playgroud)
然后
在
x平等的双方之前是要确保字符串bcd工作好。它还可以防止某些“不合适的”起始字符。
但是,我还没有找到关于this实际效果的任何解释x。那么x"%string%"和之间有什么区别"%string%"?