【问题标题】:How to pass parameter into variable in batch file?如何将参数传递给批处理文件中的变量?
【发布时间】:2017-04-23 16:34:14
【问题描述】:

还有这样的做法吗?

@echo 关闭 ECHO 你想做什么? 回声 1.MOVE ECHO 2.复制 设置“行为=” IF %Act% EQU 1 SET 进程=MOVE ELSE SET 进程=COPY %process% testfile.txt 新 暂停

【问题讨论】:

  • 是的,只要您纠正了一些小错别字,该代码就会起作用;你有什么问题?
  • 实际上没有错别字。语法正确
  • 如果语法正确,你就不会在这里问问题了 :)
  • 兄弟,我不是要求更正语法。我问的是我不知道的功能。

标签: batch-file cmd command


【解决方案1】:
@echo off
SETLOCAL
ECHO WHAT do you want to do?
ECHO 1.MOVE
ECHO 2.COPY
set /p "Act="

IF "%Act%" EQU "1" (SET "process=MOVE") ELSE (SET "process=COPY")
%process% testfile.txt New
pause

setlocal 确保程序中所做的环境更改(如设置 actprocess 在进程结束时被丢弃,因此环境不会被陈旧数据污染。

set/p 选项表示accept input 隐含来自键盘,但如果重定向也可能来自文件。

if 中的引号确保比较运算符的每一边都不为空,如果它包含空格等分隔符,则将其解释为单个字符串。

if 中的括号是必需的(至少关于 if-true 部分),以便 else 不被视为 if-true 部分中潜在可执行文件的参数。

简单的set 语句中的引号确保在分配的值中不包含尾随空格(这里可能实际上不需要,但习惯这样做是个好主意......你只需要被抓住一次出去浪费几个小时追逐杂散的空间......)

【讨论】:

  • 非常感谢,我只是没有通过“SETLOCAL”,但我的代码语法是合法的
  • 我不知道你的评论是什么意思:(
  • @David - 也许我误解了。是的,您的代码语法是合法的。但是,它并没有给你想要的结果。对吗?
猜你喜欢
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 2015-12-19
  • 2015-05-12
  • 2021-01-11
  • 2011-10-05
相关资源
最近更新 更多