相关疑难解决方法(0)

如何在set/replace命令中转义"〜"?

我正在尝试在批处理脚本中替换所有~with的实例,{~}以便VBScript不会假设我在将其传递给sendKeys时按Enter键,但是,该变量一直被替换为替换它的文字字符串.

例如,

rem Intended function;
rem input  = Hello~world.
rem output = Hello{~}world.
Run Code Online (Sandbox Code Playgroud)

但是每次都没有做任何事情,或者将refVar设置为文字字符串refVar:~={~}.

这是我尝试过的;

set refVar=!refVar:~={~}!

rem Also
set refVar=%refVar:~={~}%

rem and...
set refVar=%refVar:^~=^{^~^}%

rem and of course;
set refVar=!refVar:^~=^{^~^}!

rem and even:

set "pre=~"
set "post={~}"
set refVar=%refVar:!pre!=!post!%

rem and the same set commands with;
set refVar=!refVar:%pre%=%post%!
Run Code Online (Sandbox Code Playgroud)

我错过了逃避这种方法的方法吗?我很确定它与~在类似命令中成为位置字符有关.

我知道在VBScript中可能有一种方法可以解决这个问题,但这让我很难在没有明显变通方法的情况下获得限制.

batch-file

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

Python 在退出时关闭自己的 CMD shell 窗口

我正在运行多个进程(数百个),每个进程都在 python 中并使用以下方法调用:

command = 'start cmd /k call python %s' % (some_py_prog)
os.system(command)
Run Code Online (Sandbox Code Playgroud)

/k 在执行后使 cmd 窗口保持打开状态。这有助于检查错误。然而,当我调用数百个工作时,我的屏幕变得杂乱无章。

那么如何让python仅在成功完成时关闭它自己的主机cmd窗口?我需要错误的工作保持可见。

python windows cmd

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

批处理脚本:%0和%~f0之间有什么区别?

我有一个Batch脚本,我想在其中获取脚本的完整路径.我很好奇,这有什么区别:

set scriptpath=%0
Run Code Online (Sandbox Code Playgroud)

还有这个:

set scriptpath=%~f0
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

windows cmd batch-file command-prompt windows-10

5
推荐指数
2
解决办法
7395
查看次数

强制批处理文件在运行前加载到 RAM

我在便携式驱动器的管理分区中有一个批处理文件,在驱动器的根目录上有一个符号链接到它的快捷方式。该文件的目的是卸载驱动器并将其重新安装为指定的字母(主要是为了方便)。

当文件被打开时,它是相对于当前字母而不是卷 ID 打开的,所以很自然地,当卸载发生时,命令处理器不知道下一步要做什么,因为它根据需要读取文件而不是缓存它.

有两种可预见的解决方案,我能想到但无法弄清楚:

  1. 使文件在执行前缓存到 RAM 中
  2. 使文件相对于卷 ID 而不是挂载点运行(尝试使用 {VOLID}\file,其中 {VOLID} 是卷 ID,但它无法找到该文件,尽管它在那里(正确导航到 {VOLID}\打开目录,但尝试打开文件没有正确打开文件。

windows batch-file command-prompt

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

从外部函数批处理返回字符串

我有两个批处理文件。一个是主(调用者)文件,一个是函数。该函数接受一个参数,执行一些操作,然后我想将字符串返回给调用者 (main.bat)。%ERRORLEVEL% 不是一个选项,因为它只能返回整数。

main.bat:
call function.bat hello
function.bat:
REM some code.......
[HERE THE THE CODE TO RETURN A STRING TO CALLER FILE]
好像是基本操作,所以一定有办法。另外,我不喜欢用输出制作文件并在 main.bat 中读取它,因为我想让它作为一个易于使用的功能工作。

windows function batch-file

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

两个几乎相同的批处理脚本之一中的语法错误:“)”无法在此处进行语法处理

我正在尝试为自动 Unity 构建设置 Jenkins 服务器。

因此,我编写了两个(在我看来)基本相同的批处理脚本。

这两个脚本都由 Jenkins 通过一个Execute Windows batch command步骤作为构建步骤运行

命令: E:\unityImport.bat

然后Execute Windows batch command第二步使用

命令: E:\unityBuild.bat

它们都有相同的开头,因为我需要收集一些文件路径,特别是项目的统一版本。所以在这两个脚本中,我使用完全相同的解析和字符串拆分项目版本的方式。它们之间唯一不同的是,第一个启动 Unity 并将专用的unitypackage(保存在下一步中执行的方法)导入项目,而第二个再次启动 Unity 以执行实际构建(不幸的是它没有不能一次性工作...... Unity 似乎尝试在unitypackage导入之前执行该方法)。

然而,第二个脚本总是失败并出现语法错误

")" 不能在这里进行语法处理。


我试图实现的是

  1. 读出文件的内容 %WORKSPACE%\ProjectSettings\ProjectVersion.txt

    SET /p TEST=<%WORKSPACE%\ProjectSettings\ProjectVersion.txt
    
    Run Code Online (Sandbox Code Playgroud)

    的内容%TEST%通常看起来像例如

    m_EditorVersion: 2019.3.4f1
    
    Run Code Online (Sandbox Code Playgroud)

    ECHO. ProjectVersion.txt = %TEST%看起来像

    ProjectVersion.txt = m_EditorVersion: 2019.3.4f1
    
    Run Code Online (Sandbox Code Playgroud)
  2. 字符串拆分以便只取包含版本号的最后一部分

    for %%x in (%TEST::= %) do (
        SET "VALUE=%%x"
        SET "UNITY_VERSION=!VALUE:~0,-2!" 
    )
    
    Run Code Online (Sandbox Code Playgroud)

    所以%UNITY_VERSION%通常包含例如2019.3.4. 我不会拆分更多,因为也有两位数的 Unity 版本,例如 …

batch-file unity-game-engine jenkins

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

批处理文件如何删除自身并退出命令提示符?

反正我可以写一个批处理可以删除自己,退出命令提示符吗?我不知道该怎么做。如果我先删除该批次,则退出无法运行。如果我先退出,那么我将无法删除批处理...。我可以在同一个批处理文件中执行此操作吗?感谢您提供任何线索!!!

windows batch-file

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

如何进入CMD中的子目录?

如何在不指定子目录完整路径的情况下进入子目录?

所以当我在

C:/users/USERNAME/desktop/project/build/
Run Code Online (Sandbox Code Playgroud)

然后我该如何导航到

C:/users/USERNAME/desktop/project/build/directory 1/
Run Code Online (Sandbox Code Playgroud)

我试过了

cd /directory 1
Run Code Online (Sandbox Code Playgroud)

但这导致

该系统找不到指定的路径。


我想使用与..命令一样简单的命令,该命令可以返回一个目录而不指定其整个路径。是否有类似于更改子目录的内容?

windows cmd

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

在批处理脚本中创建文件夹并忽略它是否存在

如何在批处理脚本中创建文件夹(和任何子文件夹)?重要的是,如果文件夹(或任何子文件夹)已经存在,则不应返回错误.

例如,像这样:

  • mkdir mydir - 成功(现在创建目录)
  • mkdir mydir\subdir- 成功(现在mydir包含subdir)
  • mkdir mydir-成功(文件夹已经存在,应该不会引发错误)
  • mkdir mydir\subdir-成功(文件夹已经存在,应该不会引发错误)

我真正需要的只是确保文件夹结构存在.

windows scripting cmd batch-file

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

Windows批处理文件中的IF条件下的“ ...”和x“ ...”之间有什么区别?

我最近在文章“ 查找子字符串是否在字符串中(而不是在文件中)”中发现

@setlocal enableextensions enabledelayedexpansion
@echo off
set str1=%1
if not x%str1:bcd=%==x%str1% echo It contains bcd
endlocal
Run Code Online (Sandbox Code Playgroud)

然后

x平等的双方之前是要确保字符串bcd工作好。它还可以防止某些“不合适的”起始字符。

但是,我还没有找到关于this实际效果的任何解释x。那么x"%string%"和之间有什么区别"%string%"

string batch-file

3
推荐指数
2
解决办法
1278
查看次数

运行r脚本后从命令提示符退出

我正在通过命令提示符(CMD窗口)运行一个R脚本,但是在执行所有批处理命令后,CMD窗口仍保持打开状态。我想在执行R脚本后关闭它(CMD窗口)。

@ECHO OFF
START cmd.exe /k "cd C:\ABCD\" & Rscript working.r & exit
Run Code Online (Sandbox Code Playgroud)

我正在上面的代码运行,但最后一个命令exit对我不起作用。

我错过了上面的代码吗?

r batch-file

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

如何使用WinRAR将文件夹中的每个子文件夹压缩到单独的RAR存档中?

我是批处理文件编码的新手,需要你的帮助.

我有这些目录:

c:\rar\temp1\xy.jpg
c:\rar\temp1\sd.jpg
c:\rar\temp1\dd.jpg

c:\rar\temp2\ss.jpg
c:\rar\temp2\aa.jpg
c:\rar\temp2\sd.jpg

c:\rar\temp3\pp.jpg
c:\rar\temp3\ll.jpg
c:\rar\temp3\kk.jpg
Run Code Online (Sandbox Code Playgroud)

我想把它们压缩到这个

c:\rar\temp1\temp1.rar
c:\rar\temp2\temp2.rar
c:\rar\temp3\temp3.rar
Run Code Online (Sandbox Code Playgroud)

如何使用WinRAR完成此操作?

directory batch-file rar winrar

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

批处理文件中是否存在ELSE语法错误?

我是批处理文件编写的新手,并且正在编写一个脚本,该脚本会随机打开三个网页之一并在延迟后循环。我在运行它时经常遇到语法错误,但是我无法查明它在哪里。

:main
@echo on
set location=""
set /A num=%random% %% 10 
if /A"%num%"=="0"
(
    set location="yahoo.com"
) 
else if /A"%num%"=="1"
(
    set location="msn.com"
)
else
(
    set location="google.com"
)

start "Chrome" chrome --new-window %location%
timeout /t 30 /nobreak >NUL
goto main
Run Code Online (Sandbox Code Playgroud)

帮助将不胜感激,并在此先感谢!

batch-file

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