首页 > 解决方案 > 如果是环境变量,则取 cmd 行参数并回显它

问题描述

所以这可能看起来毫无意义,但我这样做是为了增加我对参数如何工作以及变量如何相互存储的理解。

我想要做的是:

--实际的批处理文件--

@echo off
if "%1" == "/?" ( echo blah blah help etc.)

if not "%1" == "/?" ( echo %%myvar%%)

--结束批处理文件--

--进入cmd提示符--

C:> sim.bat username  
Hsu (i.e. returns the env username)
C:>

--退出cmd提示--

我想做 %%myvar%% 的原因是因为我想将参数作为环境变量传递。这样 sim.bat os 或 sim.bat 用户名将拉取环境变量。

我知道很愚蠢,但我可以用另一种方式写它,但它又长又乏味:

if "%1" == "homedrive" (echo %homedrive%)
if "%*" =="homeshare" (echo %homeshare%)

...等等等等

我查看了多个地方,可能我只是不完全理解,但我正在努力学习,所以提前谢谢!

标签: batch-filecmdparametersenvironment-variables

解决方案


也许这些方面的东西会帮助你:

@If Not "%~1"=="" If Not "%~1"=="-?" If Not "%~1"=="/?" If Defined %~1 GoTo Start
@Echo usage/help message& Timeout 2 /NoBreak>Nul& Exit /B
:Start
@Echo Off
Call Echo %%%~1%%& Pause

…或延迟扩展:

@If Not "%~1"=="" If Not "%~1"=="-?" If Not "%~1"=="/?" If Defined %~1 GoTo Start
@Echo usage/help message& Timeout 2 /NoBreak>Nul& Exit /B
:Start
@Echo Off& SetLocal EnableDelayedExpansion
Echo !%~1!& Pause

推荐阅读