Вставка переменной в командную строку wsh.run - PullRequest
2 голосов
/ 24 октября 2019

Я хочу, чтобы моя входная переменная VBScript использовалась в моей команде
makefile = objShell.run (""""""cmd /K CD "strFolderName" & dir /-n > "strFolderName"\wk3result.txt"""""",1,True).

Я пытался cmd /K cd '"strFolderName"'… Я получаю каталог, не найденный, поэтому я не верю своим переменным strFolder имя корректно вводится в cmd строчный код.

Вот мой скрипт:

Const cTitle = "WK3 Assignment"

Dim objFSO, objFolder
Dim strFolderName, objShell
strFolderName = InputBox("Which Folder", cTitle)

Set objFSO = CreateObject("Scripting.FileSystemObject")
objFolder = objFSO.GetFolder(strFolderName)

If objFSO.FolderExists(strFolderName) Then
    WScript.Echo "Folder is there"
Else
    WScript.Echo "Folder is not there"
End If


Set objShell = WScript.CreateObject("WScript.shell")
makefile = objShell.run (""""""cmd /K CD "strFolderName" & dir /-n >      "strFolderName"\wk3result.txt"""""",1,True)

ожидается получение txt-файла с результатами dir входной папки

1 Ответ

1 голос
/ 24 октября 2019

Вам не хватает некоторого & вокруг переменной strFolderName в командной строке makefile. Это должно выглядеть следующим образом:

"cmd /K CD """ & strFolderName & """ dir /-n > """ & strFolderName & "\wk3result.txt"""

Вся команда:

makefile = objShell.run ("cmd /K CD """ & strFolderName & """ dir /-n > """ & strFolderName & "\wk3result.txt""", 1, True)

Еще лучше, сделайте переменную вашей команды на случай, если вам нужно просмотреть ее дляпоиск и устранение неисправностей:

Dim strCommand
strCommand = "cmd /K CD """ & strFolderName & """ dir /-n > """ & strFolderName & "\wk3result.txt"""
makefile = objShell.run(strCommand, 1, True)

Таким образом, вы можете проверить, какая команда используется с MsgBox strCommand.

...