相关疑难解决方法(0)

%variable%和!变量之间的差异!在批处理文件中

我正在编写一个批处理文件,我需要输出一个包含'!'的字符串 到另一个文件.但当我将该字符串回显给另一个文件时,它会删除"!" 从输出.

例如:输入:

set LINE=Hi this is! output
echo !LINE!>>new_file.txt
Run Code Online (Sandbox Code Playgroud)

new_file.txt中的输出是:

Hi this is output
Run Code Online (Sandbox Code Playgroud)

此外,如果输入是

set LINE=Hello!! this is output!!
echo !LINE!>>new_file.txt
Run Code Online (Sandbox Code Playgroud)

new_file.txt中的输出:

Hello
Run Code Online (Sandbox Code Playgroud)

因此,它跳过了!(感叹号)从输出到new_file.如果我使用%LINE%,那么它只是在输出文件中显示"echo is on".

请建议一种方法来克服这个问题.

windows command-line batch-file

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

如何在Windows批处理文件中将双引号行拆分为多行?

Windows批处理文件中的长命令可以通过使用在Windows Vista批处理(.bat)文件中拆分多行的Long命令中^提到的方式拆分为多行.

但是,如果插入符号位于双引号字符串中,则不起作用.例如:

echo "A very long line I want to ^
split into two lines"
Run Code Online (Sandbox Code Playgroud)

这将打印"A very long line I want to ^并告诉我split是一个未知的命令.

有办法解决这个问题吗?

batch-file

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

如何在批处理文件中使用if子句中的括号转义变量?

运行此批处理文件

@echo off
set a=some value with (parentheses) inside
if 1 == 1 (
    set PATH=%a%
)
Run Code Online (Sandbox Code Playgroud)

给出inside was unexpected at this time.错误.

如何转义a变量以避免此错误?

windows command-line escaping batch-file

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

Windows中的文件重定向和%errorlevel%

假设我们想要使用以下命令在Windows中创建一个空文件:

type nul > C:\does\not\exist\file.txt
Run Code Online (Sandbox Code Playgroud)

目录不存在,所以我们得到错误:

The system cannot find the path specified
Run Code Online (Sandbox Code Playgroud)

如果你打印%errorlevel%输出是:

echo %errorlevel%
0
Run Code Online (Sandbox Code Playgroud)

但命令没有成功!

我注意到,%errorlevel%如果你使用重定向,窗口不会设置最后一个命令.

有没有解决的办法?

windows error-handling batch-file io-redirection

21
推荐指数
1
解决办法
6285
查看次数

是否可以在批处理文件中的回显行中添加新的行字符?

是否可以在批处理文件中的回显行中添加新的行字符?

基本上我希望能够做到相当于:

echo Hello\nWorld
Run Code Online (Sandbox Code Playgroud)

您可以在Linux中轻松完成此操作,但我无法解决如何在Windows中执行此操作.

windows batch-file

17
推荐指数
4
解决办法
8万
查看次数

变量的行为不符合预期

我一直在努力尝试在这个批处理文件中获得正确的语法,我无法弄清楚为什么有些东西不起作用.

  1. i每次执行此变量时,变量都不会增加.
  2. 连接strc似乎没有连接.

这是我的代码:

set i=0
set "strc=concat:"

for %%f in (*.mp4) do (
    set /a i+=1
    set "str=intermediate%i%.ts"

    set strc="%strc% %str%|"

    ffmpeg -i "%%f" -c copy -bsf:v h264_mp4toannexb -f mpegts "%str%"
)

set strc="%strc:-1%"
ffmpeg -i "%strc%" -c copy -bsf:a aac_adtstoasc Output.mp4
Run Code Online (Sandbox Code Playgroud)

batch-file delayedvariableexpansion

17
推荐指数
1
解决办法
3861
查看次数

如何在批处理文件中拆分不带for循环的字符串

我想将一个字符串分成两部分,而不使用任何for循环.

例如,我在变量中有字符串:

str=45:abc
Run Code Online (Sandbox Code Playgroud)

我想进入45变量和abc另一个变量.是否可以在批处理文件中?

模式就像某些数字:somestring

dos batch-file

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

Rscript 在带有单引号和双引号的 Windows 上表现不一致

如果我调用

Rscript -e "print('hello')"
Run Code Online (Sandbox Code Playgroud)

它正确打印出答案

[1] "hello"
Run Code Online (Sandbox Code Playgroud)

但是,如果我切换单引号和双引号,则不起作用,并且看起来双引号被删除了:

Rscript -e 'print("hello")'
Run Code Online (Sandbox Code Playgroud)

给出:

Error in print(hello) : object 'hello' not found
Execution halted
Run Code Online (Sandbox Code Playgroud)

请注意,它不是 powershell 错误地进行转义。Echoing 只给出预期的结果:

PS> echo 'print("hello")'
print("hello")
PS> echo "print('hello')"
print('hello')
Run Code Online (Sandbox Code Playgroud)

在 macOs 或 Linux 上没有观察到相同的行为,这两种变体都被正确解析。

有趣的是,command.com 更疯狂:

C:>Rscript -e "print('hello')"
[1] "hello"

C:>Rscript -e 'print("hello")'
[1] "print(hello)"
Run Code Online (Sandbox Code Playgroud)

我的意思是……什么?!?这已经在这里提到了:

从 Windows 命令行运行 R 代码的单行代码

但没有关于它的解释。在我看来,这是 Windows 上 Rscript 的一个错误,但我想听听其他意见。

windows powershell r

14
推荐指数
3
解决办法
391
查看次数

Windows批处理文件:什么是变量扩展,EnableDelayedExpansion是什么意思?

什么是"变量扩张"?这仅仅意味着"变量定义"还是其他什么?

我说的时候会发生什么setLocal EnableDelayedExpansion?谷歌不清楚.

variables batch-file

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

使用Windows未定义的环境变量?

这是一个简单但令人费解的问题.

对于未定义的Windows环境变量,例如abc

在命令提示符窗口中,ECHO [%abc%]导致[%abc%]

但在.CMD批处理文件中,ECHO [%abc%]导致[]

为什么不同?我研究了ECHO命令,但却找不到任何相关信息.我担心这个微妙差异可能适用于何处.

windows variables cmd batch-file

13
推荐指数
1
解决办法
239
查看次数