用于打开多个CMD窗口的批处理脚本的奇怪行为

时间:2016-05-29 14:52:32

标签: windows batch-file cmd

我有以下目录结构:

我已经创建了StartAll.bat脚本,以便在每个文件夹中打开一个CMD窗口:

start cmd.exe /k cd Folder1 & set prompt=Folder1:
start cmd.exe /k cd Folder2 & set prompt=Folder2:
start cmd.exe /k cd Folder3 & set prompt=Folder3:
start cmd.exe /k cd Folder4 & set prompt=Folder4:

但是,我在运行时遇到了一种非常奇怪的行为:

  • 第一个窗口显示Folder1
  • 的完整路径
  • 第二个窗口显示Folder1:
  • 第3个窗口显示Folder2:
  • 第4个窗口显示Folder3:

enter image description here

如您所见,缺少最后一个文件夹的正确窗口。

我正在观察完全相同的行为,无论的文件夹数量是多少。

这里有什么想法

我也很欣赏为达到这个目的而提出的其他建议。

重要的是,我在Windows 10上运行它。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

你应该用这个:

function toSymbol(variable) = {
//... converts var to symbol
};

//toSymbol("mySymbolString") would return: mySymbolString

现在start cmd.exe /k cd Folder1 ^& set prompt=Folder1: start cmd.exe /k cd Folder2 ^& set prompt=Folder2: start cmd.exe /k cd Folder3 ^& set prompt=Folder3: start cmd.exe /k cd Folder4 ^& set prompt=Folder4: 字符未被转义,导致它在&

范围内作为新命令查看命令的第二部分

这会导致您的命令执行如下:

  1. 启动一个新窗口,继承旧提示
  2. cd到新窗口中的文件夹
  3. 将旧窗口的提示设置为文件夹名称
  4. 返回1,但旧窗口的提示已更改
  5. 然后会导致您的4个新窗口出现如下提示:

    1. 旧的原始提示,很可能是startAll.bat
    2. 的路径
    3. 文件夹1(请注意,这是startAll.bat编入folder2
    4. 的窗口 等等......