我遇到了ss64.com,它为如何编写Windows命令解释器将运行的批处理脚本提供了很好的帮助.
但是,我一直无法找到批处理脚本的语法,扩展或不扩展的方法,以及如何逃避事情的良好解释.
以下是我无法解决的示例问题:
foreach $i (@ARGV) { print '*' . $i ; }),编译它并以这种方式调用它:
my_script.exe "a ""b"" c"?输出是 *a "b*cmy_script.exe """a b c"""?输出它*"a*b*c"echo命令如何工作?在那个命令中扩展了什么?for [...] %%I在文件脚本中使用,但for [...] %I在交互式会话中?%PROCESSOR_ARCHITECTURE%字面回声?我发现echo.exe %""PROCESSOR_ARCHITECTURE%有效,有没有更好的解决方案?%配对?例:
set b=a,echo %a %b% c%?%a a c%set a =b,echo %a %b% c%?bb c%这可能很容易,但网上没有答案.我想通过批处理将XML行回显到文件中,但它误解了重定向">"的XML结束标记.该行如下:
echo <?xml version="1.0" encoding="utf-8" ?> > myfile.xml
Run Code Online (Sandbox Code Playgroud)
是否有任何方法可以提示批量解析器不解释特殊字符串?我使用双引号但它也将它们写入文件!echo之后文件应如下所示:
<?xml version="1.0" encoding="utf-8" ?>
Run Code Online (Sandbox Code Playgroud) 这是一个简单的批处理文件,它演示了如果延迟扩展在正在通过管道传输的块中,它将如何失败.(失败是在脚本的末尾)任何人都可以解释为什么这是?
我有一个解决方法,但它需要创建一个临时文件.我最初在查找文件时遇到了这个问题,并在Windows批处理文件中按大小排序
@echo off
setlocal enableDelayedExpansion
set test1=x
set test2=y
set test3=z
echo(
echo NORMAL EXPANSION TEST
echo Unsorted works
(
echo %test3%
echo %test1%
echo %test2%
)
echo(
echo Sorted works
(
echo %test3%
echo %test1%
echo %test2%
) | sort
echo(
echo ---------
echo(
echo DELAYED EXPANSION TEST
echo Unsorted works
(
echo !test3!
echo !test1!
echo !test2!
)
echo(
echo Sorted fails
(
echo !test3!
echo !test1!
echo !test2!
) | sort
echo(
echo …Run Code Online (Sandbox Code Playgroud) 这是我第一次做这些事情.基本上我正在为教堂歌曲创建一个批处理文件html制作者.这就是我所困扰的:
echo <br> %var17% >>Runfiles\temporary2.txt
Run Code Online (Sandbox Code Playgroud)
基本上var 17是一行歌词,我想在它前面加一个换行符.我将模板制作者分成了三个部分:
这是代码:
@echo off
copy "I:\Build\Files\*.txt"
ren *.txt temp.txt
setlocal ENABLEDELAYEDEXPANSION
set vidx=0
for /F "tokens=*" %%A in (temp.txt) do (
SET /A vidx=!vidx! + 1
set var!vidx!=%%A
)
set var
echo <br> %var17% >>Runfiles\temporary2.txt
TYPE Runfiles\temp1.txt > run.html
TYPE temp.txt >> run.html
TYPE Runfiles\temp2.txt >> run.html
pause
Run Code Online (Sandbox Code Playgroud)
Temp 1是开头,temp2是结尾,所以我有一个歌词文档,我想<br>在所有这些文件的前面插入一个元素.
原因是我要处理100首歌曲,手动操作需要很长时间.
这应该生成具有不同文件的Web文档的层次结构,这是因为我很懒,我做了这个.
@echo off
echo.
echo This program will generate the base folder for a new website .. .
pause
md folders
echo > folders/default.html "<html> /* More content */ </html>"
echo > folders/style.css " /* All the standards i always use */ "
echo > folders/javascript.js " /* All the standards i always use */ "
echo.
exit
Run Code Online (Sandbox Code Playgroud)
它也有效,但问题是,我不能删除/逃避引号,但这给了歇斯底里的时刻.
我尝试了很多不同的东西.用类型改变回声,我尝试了我可以在www等上找到的不同的转义选项,但引号仍然存在.
batch-file ×5
html ×2
cmd ×1
echo ×1
escaping ×1
parsing ×1
pipe ×1
quotes ×1
text-files ×1
windows ×1