batch-file - 如何在一个bat文件中设置变量并发送到另一个?
问题描述
我有两个 bat 文件,程序 1 正在运行,所以当用户输入“文件名”时,它将打开文件并进行编辑。但是,我也想这样做,如果程序 2 打开并且用户名只输入文件名,它将将该变量发送到程序 1,然后程序 1 使用该变量来编辑文件,而不是要求用户输入文件姓名。
我尝试在程序 2 上创建一个变量,然后使用 %1 但不知道如何从这里开始。
方案一:
set /p FileName=
If exist %cd%\%FileName% start %FileName%
方案二:
@echo off
set /p FileName=[FileName]:
call editor.bat %FileName%
我希望程序 1 检查程序 2 是否已发送变量,如果不正常继续
解决方案
要传递变量,您需要将其用作参数:
bat1.bat
@echo off
set /p filename="Enter Filename: "
bat2 %filename%
bat2.bat
@echo off
echo %1
两个文件需要在同一个目录下,否则调用 bat2.bat 时必须使用绝对路径
%1
是第一个参数,您可以使用多个参数%2
,即%3
进一步阅读: http ://www.pcstats.com/articleview.cfm?articleID=1767
示例脚本: https ://www.instructables.com/id/5-Cool-Batch-Files/
编辑
This if from:批量解析每个参数
该SHIFT
命令将参数向左移动,直到不再存在。所以在调用 %1 之后,%2 变成 %1,以此类推
@ECHO OFF
:Loop
IF "%1"=="" GOTO Continue
ECHO %1
SHIFT
GOTO Loop
:Continue
推荐阅读
- c - 为什么当我调用结构时它只显示我给出的最后一个输入
- liquid - 如何在 Power Apps 门户中进行 URL 解码
- python - 如何从python中的字典列表中获取值?
- java - 在 Java 中收到错误但不理解问题:Application init 方法 java.lang.reflect.InvocationTargetException 中的异常
- c++ - 从带有西里尔字母的文件中读取不起作用(输入大小 = 0)
- c# - C# Linq 如何选择除一个(DateTime)之外的所有列?
- html - 当Angular中的输入为空时如何隐藏列
- object-detection - 如何标记我自己的点云数据以获得 3D 训练标签 (.txt) 文件,例如 KITTI 3D 对象检测数据集?
- javascript - 何时使用 require 以及何时通过参数提供依赖项
- c++ - OpenMP 减少容器元素