相关疑难解决方法(0)

Windows命令解释器(CMD.EXE)如何解析脚本?

我遇到了ss64.com,它为如何编写Windows命令解释器将运行的批处理脚本提供了很好的帮助.

但是,我一直无法找到批处理脚本的语法,扩展或不扩展的方法,以及如何逃避事情的良好解释.

以下是我无法解决的示例问题:

  • 如何管理报价系统?我制作了一个TinyPerl脚本
    (foreach $i (@ARGV) { print '*' . $i ; }),编译它并以这种方式调用它:
    • my_script.exe "a ""b"" c"?输出是 *a "b*c
    • my_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%
  • 如果此变量包含双引号,如何确保变量作为单个参数传递给命令?
  • 使用 …

windows parsing cmd batch-file variable-expansion

132
推荐指数
5
解决办法
6万
查看次数

使用批处理文件将文件夹的所有内容复制到另一个文件

我有一个文件夹 C:\Folder1

我想将所有内容复制Folder1到另一个位置,D:\Folder2

如何使用批处理文件执行此操作?

windows directory copy batch-file

121
推荐指数
5
解决办法
34万
查看次数

转义参数中的双引号

在Unix中,我可以运行myscript '"test"',我会得到"test".

在Windows中,cmd我得到了'test'.

如何将双引号作为参数传递?我想知道如何从cmd窗口手动执行此操作,因此我不必编写程序来测试我的程序.

windows cmd

94
推荐指数
4
解决办法
14万
查看次数

忽略批处理文件中的百分号

我有一个批处理文件,将文件从一个文件夹移动到另一个文件夹 批处理文件由另一个进程生成.

我需要移动的一些文件中包含字符串"%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)

有什么办法可以忽略%吗?我无法改变生成的文件以逃避这种情况,例如加倍百分号(%%),逃避/^(插入符号)等.

escaping batch-file

30
推荐指数
4
解决办法
3万
查看次数

如何安全地将带空格的文件名传递给Perl中的外部命令?

我有一个Perl脚本处理一堆文件名,并在反引号中使用这些文件名.但文件名包含空格,撇号和其他时髦字符.

我希望能够正确地逃脱它们(即不使用我头顶的随机正则表达式).是否存在正确转义字符串以在bash命令中使用的CPAN模块?我知道我过去已经解决了这个问题,但这次我找不到任何东西.关于它的信息似乎令人惊讶.

perl escaping

7
推荐指数
2
解决办法
7119
查看次数

带引号和空格的批参数

批处理文件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)

escaping batch-file

6
推荐指数
1
解决办法
1572
查看次数

如何使用正确的工作目录从 BAT 文件启动 PowerShell 脚本?

我正在尝试创建 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)

以这种方式传递工作目录不起作用。

如何制作将传递正确工作目录和命令行参数的脚本?

windows powershell cmd batch-file

6
推荐指数
2
解决办法
1万
查看次数

当传递的参数带有引号时使用 DOS 启动命令

我有一个关于 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

windows command-line batch-file

5
推荐指数
1
解决办法
3615
查看次数

Powershell:将json字符串传递给curl

我正在尝试使用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脚本中调用它时,双引号似乎被剥离.

到目前为止,我尝试过:

  • 将JSON放在单引号字符串中:
    curl.exe -ku user@email:mypass -X PUT -d '"data={\"password\":\"keypass\"}"'  https://build.phonegap.com/api/v1/key
  • 将JSON放在单引号字符串中,而不使用DOS转义反斜杠:
    curl.exe -ku user@email:mypass -X PUT -d '"data={"password":"keypass"}"'  https://build.phonegap.com/api/v1/key
  • 将JSON放在单引号字符串中,转义双引号和反斜杠(带有反斜杠的DOS样式):
    curl.exe -ku user@email:mypass -X PUT -d '\"data={\\\"password\\\":\\\"keypass\\\"}\"'  https://build.phonegap.com/api/v1/key
  • 将JSON放在双引号字符串中,使用powershell返回刻度字符'转义双引号:
    curl.exe -ku user@email:mypass -X PUT -d "`"data={\`"password\`":\`"build*2014`\`"}`""  https://build.phonegap.com/api/v1/key



知道怎么做到这一点?

谢谢你的时间,科恩

powershell curl

4
推荐指数
2
解决办法
6654
查看次数