【问题标题】:Windows Batch variables available outside a script脚本外可用的 Windows 批处理变量
【发布时间】:2018-11-03 07:54:57
【问题描述】:

我正在创建一个脚本来创建一个名为 http_proxy 的变量。该脚本不仅仅设置代理,它还包含一些语句以及在加载时提示输入用户密码。

我已经设置了一个 cmd.exe 的快捷方式,并带有一个额外的参数 /k ".set_http_proxy.bat" 在启动时运行,它设置了这个变量。

脚本退出后,命令提示符保持打开状态,用户可以运行他们的脚本。我的问题是,变量 http_proxy 现在已经消失了,并且没有任何迹象表明它是在刚刚运行的脚本中设置的。

有没有办法设置一个变量,该变量在命令提示符窗口关闭之前一直用于该会话?我认为在bash 我们只使用export 这很棒!

当前的代码很简单……

set http_proxy=http://proxy.address

【问题讨论】:

  • /k ".set_http_proxy.bat"?起始点是干什么用的?去掉它。我希望收到像 '.set_http_porxe.bat' is not recognized ... 这样的错误消息
  • @Stephan,文件名可以以点开头。
  • @Stephan Filenames 可以以点开头,这只是我使用 bash 脚本来隐藏文件的日子。在 Windows 中显然不一样,但我尽量保持相同的格式,所以我有一个通用模板。
  • @Stephan,Windows 只查看最后一个文件扩展名来确定文件类型。
  • 那么真的有一个点吗?没想到。是否执行(您是否在正确的工作文件夹中)?

标签: windows batch-file variables cmd


【解决方案1】:

如果仅此而已,那么它应该完全按照您的预期工作,事实上,当我尝试它时,它对我也是如此。

除非您使用setlocal 或启动另一个进程来运行批处理文件,否则即使在批处理文件完成后环境变量仍然存在。

【讨论】:

  • 我真是个傻瓜,我的脚本顶部有setlocal ENABLEDELAYEDEXPANSION。删除似乎治愈了它。谢谢乔伊
  • @RichardC: 如果你需要setlocal(虽然你也可以通过命令行参数将延迟扩展设置为cmd),你总是可以在末尾添加endlocal & set http_proxy=%http_proxy%批处理文件以“导出”变量。
猜你喜欢
  • 2014-05-09
  • 2012-01-26
  • 2011-02-10
  • 1970-01-01
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多