我遇到了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%我有一个文件夹 C:\Folder1
我想将所有内容复制Folder1到另一个位置,D:\Folder2
如何使用批处理文件执行此操作?
在Unix中,我可以运行myscript '"test"',我会得到"test".
在Windows中,cmd我得到了'test'.
如何将双引号作为参数传递?我想知道如何从cmd窗口手动执行此操作,因此我不必编写程序来测试我的程序.
我有一个批处理文件,将文件从一个文件夹移动到另一个文件夹 批处理文件由另一个进程生成.
我需要移动的一些文件中包含字符串"%20":
move /y "\\myserver\myfolder\file%20name.txt" "\\myserver\otherfolder"
Run Code Online (Sandbox Code Playgroud)
这会失败,因为它试图找到一个名称为的文件:
\\myserver\myfolder\file0name.txt
Run Code Online (Sandbox Code Playgroud)
有什么办法可以忽略%吗?我无法改变生成的文件以逃避这种情况,例如加倍百分号(%%),逃避/或^(插入符号)等.
我有一个Perl脚本处理一堆文件名,并在反引号中使用这些文件名.但文件名包含空格,撇号和其他时髦字符.
我希望能够正确地逃脱它们(即不使用我头顶的随机正则表达式).是否存在正确转义字符串以在bash命令中使用的CPAN模块?我知道我过去已经解决了这个问题,但这次我找不到任何东西.关于它的信息似乎令人惊讶.
批处理文件args.bat用于测试目的:
@echo off
echo Arguments 1 to 4:
echo.%~1
echo.%~2
echo.%~3
echo.%~4
Run Code Online (Sandbox Code Playgroud)
批处理文件~用于删除前导和尾随引号,它应该向用户显示以下值:
Argument 1
This is "Argument 2".
Run Code Online (Sandbox Code Playgroud)
对于参数1,它很容易:
args.bat "Argument 1"
Run Code Online (Sandbox Code Playgroud)
但是,对于参数2,无论我尝试什么转义序列(事情都在Stack Overflow上找到了几个),事情都不能正常工作:
// Didn't expect this to work, but for completeness
>args.bat "Argument 1" "This is "Argument 2"."
Arguments 1 to 4:
Argument 1
This is "Argument
2"."
Run Code Online (Sandbox Code Playgroud)
使用双引号转义以某种方式传递双引号:
>args.bat "Argument 1" "This is ""Argument 2""."
Arguments 1 to 4:
Argument 1
This is ""Argument 2"".
Run Code Online (Sandbox Code Playgroud)
逃避痉挛:
>args.bat "Argument 1" "This is ^"Argument …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建 bat 脚本,该脚本可以在正确的工作目录中启动与 bat 文件名称相同的 PowerShell 脚本。
这是我得到的:
@ECHO OFF
PowerShell.exe -NoProfile -Command "& {Start-Process PowerShell.exe -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%~dpn0.ps1""' -WorkingDirectory '%~dp0' -Verb RunAs}"
PAUSE
Run Code Online (Sandbox Code Playgroud)
以这种方式传递工作目录不起作用。
如何制作将传递正确工作目录和命令行参数的脚本?
我有一个关于 DOS 启动命令的问题。\n我已经阅读过此主题:\n使用 DOS \xe2\x80\x9cstart\xe2\x80\x9d 命令并将参数传递给启动的程序\n使用“start”命令并将参数传递给启动的程序
\n\n但我的问题有点不同。
\n\n我有这个问题:我需要传递需要引用的路径。
\n\n例如,如果路径没有引号,则效果很好:
\n\n启动“”app.exe -选项c:\\ myapp \\ myfile.txt
\n\n但如果路径有双引号,则不起作用。
\n\n我的批处理文件中有这一行:
\n\n启动“” myapp.exe -选项 %mypath%
\n\n当 %mypath% 包含双引号(名称中包含空格或其他字符的路径)时,启动命令会返回非常奇怪的结果。
\n\n谢谢\n桑德罗
\n我正在尝试使用curl将一个来自powershell脚本的JSON字符串传递给build.phonegap.com api.
根据phonegap的论坛,当在Windows机器上运行时,JSON数据必须格式化为:
curl.exe -ku user@email:mypass -X PUT -d "data={\"password\":"\keypass\"}" https://build.phonegap.com/api/v1/key
Run Code Online (Sandbox Code Playgroud)
实际上,从命令行调用时,这确实运行良好.
但是,当我尝试在powershell脚本中调用它时,双引号似乎被剥离.
到目前为止,我尝试过:
curl.exe -ku user@email:mypass -X PUT -d '"data={\"password\":\"keypass\"}"' https://build.phonegap.com/api/v1/key
curl.exe -ku user@email:mypass -X PUT -d '"data={"password":"keypass"}"' https://build.phonegap.com/api/v1/key
curl.exe -ku user@email:mypass -X PUT -d '\"data={\\\"password\\\":\\\"keypass\\\"}\"' https://build.phonegap.com/api/v1/key
curl.exe -ku user@email:mypass -X PUT -d "`"data={\`"password\`":\`"build*2014`\`"}`"" https://build.phonegap.com/api/v1/key
知道怎么做到这一点?
谢谢你的时间,科恩
batch-file ×6
windows ×5
cmd ×3
escaping ×3
powershell ×2
command-line ×1
copy ×1
curl ×1
directory ×1
parsing ×1
perl ×1