gpt4 book ai didi

batch-file - 有没有办法将参数 "by name"(而不是按顺序)传递给批处理 .bat 文件?

转载 作者:行者123 更新时间:2023-12-03 06:53:39 24 4
gpt4 key购买 nike

我需要能够按名称(而不是按顺序)将参数传递到 Windows 批处理文件。我的目的是让最终用户能够灵活地以任何顺序传递参数,并且批处理文件仍然应该能够处理它们。

让我的问题更清楚的例子:

在命令行中,用户执行以下操作:somebatchfile.bat originalFile.txt newFile.txt

somebatchfile.bat中有一个简单的语句,用于将原始文件的内容(第一个参数%1%)复制到新文件(第二个参数%2%)。它可以像下面的语句一样简单:复制%1% %2%

现在,如果用户以相反的顺序传递上述参数,结果将远非理想(事实上非常错误)。

那么,有没有一种方法可以让用户按名称传递参数:例如somebatchfile.bat "SOURC=originalFile.txt""TARGET=newFile.txt" 并让脚本识别它们并在正确的位置使用它们,例如复制%SOURCE% %TARGET%

谢谢

最佳答案

是的,你可以做类似的事情,但我不认为你可以使用“=”作为标记分隔符。您可以使用冒号“:”,somebatchfile.bat“SOURC:originalFile.txt”“TARGET:newFile.txt”。以下是如何分割 token 的示例:

@echo off

set foo=%1
echo input: %foo%

for /f "tokens=1,2 delims=:" %%a in ("%foo%") do set name=%%a & set val=%%b

echo name: %name%
echo value: %val%

运行它会产生这样的结果:

C:\>test.bat SOURC:originalFile.txt
input: SOURC:originalFile.txt
name: SOURC
value: originalFile.txt

[编辑]

好吧,也许昨晚对我来说太接近 sleep 时间了,但今天早上再看一遍,你可以这样做:

@echo off

set %1
set %2

echo source: %SOURCE%
echo target: %TARGET%

这会产生这个(请注意,我在命令行上颠倒了源和目标以显示它们已正确设置和检索):

C:\>test.bat "TARGET=newFile.txt" "SOURCE=originalFile.txt"
source: originalFile.txt
target: newFile.txt

请注意,%1 和 %2 在设置之前进行评估,因此它们确实被设置为环境变量。但是,它们必须在命令行上被引用。

关于batch-file - 有没有办法将参数 "by name"(而不是按顺序)传递给批处理 .bat 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5215729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com