我正在尝试在批处理脚本中替换所有~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中可能有一种方法可以解决这个问题,但这让我很难在没有明显变通方法的情况下获得限制.
我正在运行多个进程(数百个),每个进程都在 python 中并使用以下方法调用:
command = 'start cmd /k call python %s' % (some_py_prog)
os.system(command)
Run Code Online (Sandbox Code Playgroud)
/k 在执行后使 cmd 窗口保持打开状态。这有助于检查错误。然而,当我调用数百个工作时,我的屏幕变得杂乱无章。
那么如何让python仅在成功完成时关闭它自己的主机cmd窗口?我需要错误的工作保持可见。
我有一个Batch脚本,我想在其中获取脚本的完整路径.我很好奇,这有什么区别:
set scriptpath=%0
Run Code Online (Sandbox Code Playgroud)
还有这个:
set scriptpath=%~f0
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
我在便携式驱动器的管理分区中有一个批处理文件,在驱动器的根目录上有一个符号链接到它的快捷方式。该文件的目的是卸载驱动器并将其重新安装为指定的字母(主要是为了方便)。
当文件被打开时,它是相对于当前字母而不是卷 ID 打开的,所以很自然地,当卸载发生时,命令处理器不知道下一步要做什么,因为它根据需要读取文件而不是缓存它.
有两种可预见的解决方案,我能想到但无法弄清楚:
我有两个批处理文件。一个是主(调用者)文件,一个是函数。该函数接受一个参数,执行一些操作,然后我想将字符串返回给调用者 (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 中读取它,因为我想让它作为一个易于使用的功能工作。
我正在尝试为自动 Unity 构建设置 Jenkins 服务器。
因此,我编写了两个(在我看来)基本相同的批处理脚本。
这两个脚本都由 Jenkins 通过一个Execute Windows batch command步骤作为构建步骤运行
命令: E:\unityImport.bat
然后Execute Windows batch command第二步使用
命令: E:\unityBuild.bat
它们都有相同的开头,因为我需要收集一些文件路径,特别是项目的统一版本。所以在这两个脚本中,我使用完全相同的解析和字符串拆分项目版本的方式。它们之间唯一不同的是,第一个启动 Unity 并将专用的unitypackage(保存在下一步中执行的方法)导入项目,而第二个再次启动 Unity 以执行实际构建(不幸的是它没有不能一次性工作...... Unity 似乎尝试在unitypackage导入之前执行该方法)。
然而,第二个脚本总是失败并出现语法错误
")" 不能在这里进行语法处理。
我试图实现的是
读出文件的内容 %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)字符串拆分以便只取包含版本号的最后一部分
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 版本,例如 …
反正我可以写一个批处理可以删除自己,退出命令提示符吗?我不知道该怎么做。如果我先删除该批次,则退出无法运行。如果我先退出,那么我将无法删除批处理...。我可以在同一个批处理文件中执行此操作吗?感谢您提供任何线索!!!
如何在不指定子目录完整路径的情况下进入子目录?
所以当我在
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)
但这导致
该系统找不到指定的路径。
我想使用与..命令一样简单的命令,该命令可以返回一个目录而不指定其整个路径。是否有类似于更改子目录的内容?
如何在批处理脚本中创建文件夹(和任何子文件夹)?重要的是,如果文件夹(或任何子文件夹)已经存在,则不应返回错误.
例如,像这样:
mkdir mydir - 成功(现在创建目录)mkdir mydir\subdir- 成功(现在mydir包含subdir)mkdir mydir-成功(文件夹已经存在,应该不会引发错误)mkdir mydir\subdir-成功(文件夹已经存在,应该不会引发错误)我真正需要的只是确保文件夹结构存在.
我最近在文章“ 查找子字符串是否在字符串中(而不是在文件中)”中发现
@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%"?
我正在通过命令提示符(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对我不起作用。
我错过了上面的代码吗?
我是批处理文件编码的新手,需要你的帮助.
我有这些目录:
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完成此操作?
我是批处理文件编写的新手,并且正在编写一个脚本,该脚本会随机打开三个网页之一并在延迟后循环。我在运行它时经常遇到语法错误,但是我无法查明它在哪里。
: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)
帮助将不胜感激,并在此先感谢!