相关疑难解决方法(0)

如何在批处理文件中回显换行符?

你怎么能从批处理文件输出中插入换行符?

我想做的事情如下:

echo hello\nworld
Run Code Online (Sandbox Code Playgroud)

哪个会输出:

hello
world
Run Code Online (Sandbox Code Playgroud)

windows newline batch-file

605
推荐指数
12
解决办法
93万
查看次数

是否有命令从Windows中的命令提示符刷新环境变量?

如果我修改或添加环境变量,我必须重新启动命令提示符.是否有一个我可以执行的命令可以在不重新启动CMD的情况下执行此操作?

windows cmd environment-variables

446
推荐指数
17
解决办法
50万
查看次数

如何在批处理文件中使用if - else结构?

我有一个关于if - else批处理文件中的结构的问题.每个命令都单独运行,但是我无法安全地使用"if - else"块,所以我的程序的这些部分不起作用.我怎么能让这些部件运行?谢谢.

IF %F%==1 IF %C%==1 (
    ::copying the file c to d
    copy "%sourceFile%" "%destinationFile%"
    )
ELSE IF %F%==1 IF %C%==0 (
    ::moving the file c to d
    move "%sourceFile%" "%destinationFile%"
    )

ELSE IF %F%==0 IF %C%==1 (
    ::copying a directory c from d, /s:  bo? olanlar hariç, /e:bo? olanlar dahil
    xcopy "%sourceCopyDirectory%" "%destinationCopyDirectory%" /s/e
    )
ELSE IF %F%==0 IF %C%==0 (
    ::moving a directory
    xcopy /E "%sourceMoveDirectory%" "%destinationMoveDirectory%"
    rd /s /q "%sourceMoveDirectory%"
    )
Run Code Online (Sandbox Code Playgroud)

if-statement batch-file

129
推荐指数
4
解决办法
74万
查看次数

在Windows命令提示符中转义尖括号

我需要将包含尖括号(<和>)的字符串回显到Windows计算机上的文件.基本上我想做的是以下内容:
echo some string < with angle > brackets >>myfile.txt

这不起作用,因为命令解释器与尖括号混淆.我可以像这样引用整个字符串:
echo "some string < with angle > brackets" >>myfile.txt

但后来我的文件中有双引号,我不想要.

转义括号ala unix也不起作用:
echo some string \< with angle \> brackets >>myfile.txt

想法?

windows

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

在批处理脚本中转义双引号

如何使用转义双引号替换批处理文件参数中的所有双引号?这是我当前的批处理文件,它扩展了字符串中的所有命令行参数:

@echo off
call bash --verbose -c "g++-linux-4.1 %*"
Run Code Online (Sandbox Code Playgroud)

然后它使用该字符串调用Cygwin的bash,执行Linux交叉编译器.不幸的是,我将这些参数传递给我的批处理文件:

"launch-linux-g++.bat" -ftemplate-depth-128 -O3 -finline-functions 
-Wno-inline -Wall  -DNDEBUG   -c 
-o "C:\Users\Me\Documents\Testing\SparseLib\bin\Win32\LinuxRelease\hello.o" 
"c:\Users\Me\Documents\Testing\SparseLib\SparseLib\hello.cpp"
Run Code Online (Sandbox Code Playgroud)

传入第一个路径的第一个引用是过早地结束传递给GCC的字符串,并将其余参数直接传递给bash(这非常失败.)

我想如果我可以将参数连接成一个单独的字符串然后转义它应该正常工作的引号,但我很难确定如何做到这一点.有人知道吗?

parameters quotes scripting escaping batch-file

84
推荐指数
4
解决办法
13万
查看次数

批量字符转义

我非常擅长为Windows编写批处理脚本,但即便在这些年后如何正确地逃避字符让我感到困惑.在尝试找出正确的方法来逃避正则表达式以便与sed一起使用时,这一点尤其困难.有什么工具可以帮助我吗?也许某些东西允许我粘贴在"普通"字符串中并且它会吐出正确转义的字符串版本?

更新: 我不愿意举一个例子,因为我不是在寻找如何逃避一个特定字符串的答案.我也不是在寻找适合某个特定应用的解决方案.我正在寻找一种工具,它可以帮助我为每个我需要逃脱的字符串获取正确的转义语法,无论从命令行使用什么工具.

那就是我真正想要的正则表达式

(^.*)(Form Product=")([^"]*") FormType="[^"]*" FormID="([0-9][0-9]*)".*$
Run Code Online (Sandbox Code Playgroud)

采用真正的正则表达式(即就BATCH而言未转义)并将其包装成一些sed语法,例如ssed "s@ --- Insert escaped regex here --- @http://psph/\1/\2@g" "%~1"最后将其转义...再次,是否有任何工具可以帮助转义任何字符串以便在BATCH命令行上使用?

ps BATCH的逃避语法有很多例外,我甚至会选择一个好的备忘单.

windows scripting batch-file

41
推荐指数
3
解决办法
7万
查看次数

检查是否定义了没有命令扩展且没有使用批处理文件的环境变量?

我需要使用cmd.exe命令行(从gyp构建工具调用cmd.exe)来确定是否定义了环境变量.我怎样才能做到这一点?我可以假设变量值不包含单引号或双引号,但不能假设启用了命令扩展.

我尝试了以下内容,它在.bat文件中运行良好,但在命令行上直接输入时失败:

IF "%UNDEFINED%" == "" (echo yes)
Run Code Online (Sandbox Code Playgroud)

当该确切行在.bat文件中并执行时,我将其yes视为输出.当我在命令行上键入它时,输出为空.我在Windows XP SP3上测试这个,虽然我的同事在Windows 7上看到相同的结果.这是http://support.microsoft.com/kb/121170http://www.robvanderwoude.com/建议的方法battech_defined.php.我不想使用,IF DEFINED UNDEFINED (echo yes)因为如果禁用了命令扩展,那将无法使用.

以下帖子中的最高投票回答让我相信这个问题与"CmdLineParser"与"BatchLineParser"中百分比扩展的处理方式有关,但仍然没有让我找到解决方案: 如何Windows命令解释器(CMD.EXE)解析脚本吗?

windows cmd batch-file

37
推荐指数
4
解决办法
6万
查看次数

如何批量循环数组?

我创建了一个这样的数组:

set sources[0]="\\sources\folder1\"
set sources[1]="\\sources\folder2\"
set sources[2]="\\sources\folder3\"
set sources[3]="\\sources\folder4\"
Run Code Online (Sandbox Code Playgroud)

现在我想迭代这个数组:

for %%s in (%sources%) do echo %%s
Run Code Online (Sandbox Code Playgroud)

它不起作用!似乎脚本不会进入循环.这是为什么?我怎么能迭代呢?

for-loop batch-file

36
推荐指数
6
解决办法
8万
查看次数

为什么延迟扩展在管道代码块内部失败?

这是一个简单的批处理文件,它演示了如果延迟扩展在正在通过管道传输的块中,它将如何失败.(失败是在脚本的末尾)任何人都可以解释为什么这是?

我有一个解决方法,但它需要创建一个临时文件.我最初在查找文件时遇到了这个问题,并在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)

pipe batch-file

31
推荐指数
3
解决办法
1万
查看次数

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

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

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