- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在 cmd 批处理文件中有以下内容:
for /f %%l in (%2) do (for %%f in (%%l) do copy "%%f" %1))
%1
参数的字符串值
x
(也被传递到批处理文件,例如
%3
)和
%4
值也作为参数传递给批处理文件。
if %1 = 'test replace x with y'
%3=x
%4=y
最佳答案
首先,您必须存储 %1
到一个变量中,然后您将能够执行替换。
基本上,替换的语法是这样的:
%variable:str1=str2%
这意味着:'替换每个
str1
在
variable
与
str2
'。
str1
和
str2
是参数,而不是文字字符串。直接使用上面的模板,你可能会得到这个表达式:
%variable:%3=%4%
.
%3
和
%4
应该先评估。实际上,它会首先尝试评估
%variable:%
(并失败)。
ECHO %var%
==>
CALL ECHO %%var%%
.
%
s。在解析时,它们被评估为单个
%
s。生成的命令将通过 CALL 再次解析,最终效果将与原始命令的情况相同,
ECHO %var%
.
%3
和
%4
先求值,然后是整个结果表达式。具体来说,像这样:
%%variable:%3=%4%%
在第一次解析之后,这个表达式会变成这样:
%variable:x=y%
这将再次解析,输出将是
variable
的修改内容。
SET "output=%1"
CALL SET output=%%output:%3=%4%%
ECHO %output%
!var!
而不是
%var%
用于立即扩展(它仍然有效并且可以与延迟扩展语法一起使用)。
!var!
除非您使用以下命令启用语法,否则将无法在您的脚本中使用:
SETLOCAL EnableDelayedExpansion
ENDLOCAL
命令关闭延迟扩展语法有效并由命令 shell 解释的块。
SET "output=%1"
SETLOCAL EnableDelayedExpansion
SET output=!output:%3=%4!
ECHO !output!
ENDLOCAL
那么在
SET output=!output:%3=%4!
的情况下这是如何工作的命令:
%3
和 %4
立即评估,即在解析时 - 它们被替换为 x
和 y
分别;SET output=!output:x=y!
;!
表达式被评估( x
s 被替换为 y
s);output
变量被修改。!
成为语法的一部分,并在遇到时被使用和解释。因此,您需要在要将其用作文字的地方对其进行转义(例如
^!
)。
ENDLOCAL
时),变量被设置为进入它之前(在执行
SETLOCAL
之前)的值。这对您来说意味着
output
的更改值仅在
SETLOCAL
内有效您必须首先启动以使用延迟扩展的块。在您的特定情况下,这可能不是问题,如果您只需要修改该值然后立即使用它,但您可能必须记住它以备将来使用。
ENDLOCAL & SET "output=%output%"
&
当命令位于同一行时,操作符只是将它们分隔开。它们按照指定的顺序一个接一个地执行。问题是,在解析该行时,SETLOCAL 块还没有离开,所以
%output%
计算为修改后的值,该值仍然有效。但是赋值实际上是在
ENDLOCAL
之后执行的,即在离开块之后。因此,您在离开块后有效地存储了修改后的值,从而保留了更改。 (谢谢,
jeb !)
关于windows - 如何用命令行参数字符串替换bat文件中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5816178/
这段代码: class Bat{ public: Bat(); Bat(int i=0); virtual ~B
有没有办法摆脱整个测试文件?整个测试套件? 类似的东西 @test 'dependent pgm unzip' { command -v unzip || BAIL 'missing depend
我有一些 bats我运行以测试某些功能的脚本如何在脚本中回显 bats 文件名? 我的 bats 脚本如下所示: #!/usr/bin/env bats load test_helper echo $
我想创建一个 bat 文件,该文件创建一个文件列表和路径(MyList.txt)。将该文件保存到运行 bat 文件的同一目录中。 这就是我试图用 MyList.txt 完成的。我也想整理文件。 fil
有人可以教我如何使用 .bat 文件或建议更改代理设置吗? 老实说,我找不到有关的好信息。 我需要一个 .bat 文件,它将使用特定的代理 IP 和端口更改我的 Internet 设置(代理)。 谢谢
我想知道如何创建一个 bat 文件来执行在特定目录中找到的所有其他 bat 文件? 最佳答案 单向 for %%f in (c:\xxx\*.bat) do ( call %%f ) (要从同一
我想知道如何创建一个 bat 文件来执行在特定目录中找到的所有其他 bat 文件? 最佳答案 单向 for %%f in (c:\xxx\*.bat) do ( call %%f ) (要从同一
我需要创建 2 个 .bat 文件: 转储我的 PostgreSQL 数据库 恢复 PostgreSQL 数据库 如何将变量(数据库名称、登录名、密码等)移出到外部文件,以便两个 .bat 文件可以使
我正在尝试设置 Minecraft 服务器,实际上一切正常。我正在使用 launch.bat 文件启动服务器。 "%ProgramFiles%\Java\jre1.8.0_20\bin\java.ex
我在 Windows 2003 系统上,需要编写脚本来删除和创建 WebSphere Application Server 中的配置文件。这需要我调用 manageprofiles.bat 两次,一次
这里相对简单的事情没有一个容易发现的答案......我已经尝试了 start、/K 标志等的变体,但是每当我的批处理文件命中 servicecontroller 时行并运行该命令,它完成了命令,但之后
我正在尝试获取我的 commit-build.bat执行其他 .BAT 文件作为我们构建过程的一部分。 commit-build.bat的内容: "msbuild.bat" "unit-tests.b
我有一个要获取的实用程序脚本,其中包含两个提示用户输入的函数; anykey 和 yesno。 如何测试提示?提示文本不会显示在 $output 中。 此外,如何强制 yesno 中的 while 循
我有一个要获取的实用程序脚本,其中包含两个提示用户输入的函数; anykey 和 yesno。 如何测试提示?提示文本不会显示在 $output 中。 此外,如何强制 yesno 中的 while 循
我有一个 bat 文件,它根据文件名将每个文件放在一个文件夹中。但是,当我运行 bat 文件时,它也会将 bat 文件放在一个文件夹中。我想排除 bat 文件扩展名,因为我必须进入每个文件夹并剪切 b
我的机器上安装了 python.exe(多次),但没有安装 python.bat。我正在尝试构建 Chromium 嵌入式框架,主批处理文件显示 @echo off python.bat tools\
我想使用 master.bat 从不同位置执行多个 .bat 文件 我试过 Master.bat REM Echo Launch dir: "%~dp0" REM Echo Current dir:
嘿社区,我需要知道如何运行 .bat 文件以将文本字符串写入运行 .jar 的 .bat 文件以使用该命令。 用于运行其他批处理文件中的命令的批处理文件也将从 Windows 任务计划程序运行。 顺便
在C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC目录下,有两个.bat文件: ./vcvarsall.bat bin/vcvars32.b
我想在 tomcat 上部署时在 war 文件之外设置 application.properties 文件,这是我的观察 1. 当我将 jvm 属性设置为 spring.config.location
我是一名优秀的程序员,十分优秀!