我有两个非常简单的批处理文件示例:
给变量赋值:
@echo off
set FOO=1
echo FOO: %FOO%
pause
echo on
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,结果是:
FOO: 1
Press any key to continue . . .
Run Code Online (Sandbox Code Playgroud)
但是,如果我将相同的两行放在 IF NOT DEFINED 块中:
@echo off
IF NOT DEFINED BAR (
set FOO=1
echo FOO: %FOO%
)
pause
echo on
Run Code Online (Sandbox Code Playgroud)
这出乎意料地导致:
FOO:
Press any key to continue . . .
Run Code Online (Sandbox Code Playgroud)
这应该与 IF没有任何关系,显然该块正在被执行。如果我在 if 上方定义 BAR,则只显示 PAUSE 命令中的文本,正如预期的那样。
是什么赋予了?
跟进问题:有没有办法在没有 setlocal 的情况下启用延迟扩展?
如果我从另一个内部调用这个简单的示例批处理文件,则该示例设置 FOO,但仅限于 LOCALLY。
例如:
测试调用者.bat
@call test.bat
@echo FOO: …Run Code Online (Sandbox Code Playgroud) 我需要至少在 Windows XP 上支持的东西,并且希望不需要任何新用户下载。
我在 Windows 10(VirtualBox 5.1.4,Vagrant 1.8.5)下有一个带有 Linux 的流浪盒。我正在以普通用户的身份使用 Git Bash。在 vagrant 框内,我无法创建符号链接:
c:/path/to/my/vagrant-project/ vagrant up + vagrant ssh
/home/vagrant/my-shared-folder/ $ ln -s /any/path/to/linux/box/folder my-symlink-name
/home/vagrant/my-shared-folder/ $ ln: creating symbolic link `my-symlink-name': Protocol error
Run Code Online (Sandbox Code Playgroud)
在 Windows 7 下,它正在使用:如何作为普通用户在 Windows 7 家庭高级版中创建链接?
那么,在 Windows 10 下有什么变化吗?