相关疑难解决方法(0)

在 IF 内部时未设置批处理文件中的变量?

我有两个非常简单的批处理文件示例:

给变量赋值:

@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 batch command-line

82
推荐指数
2
解决办法
14万
查看次数

在 Windows 上创建符号链接的简单方法?

我需要至少在 Windows XP 上支持的东西并且希望不需要任何新用户下载。

windows symbolic-link windows-xp

34
推荐指数
6
解决办法
4万
查看次数

Windows 10下的Vagrant共享文件夹和符号链接

我在 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 下有什么变化吗?

virtualbox symbolic-link shared-folders vagrant windows-10

6
推荐指数
1
解决办法
1万
查看次数