1 (изменено: qsedftghk, 2023-09-15 14:48:34)

Тема: VBS: WshShell.Run "mklink...

Перетянув файл на скрипт, хотелось бы получить символическую ссылку в папке C:\111 на папку, в которой лежит файл.
Вроде ж нормально всё с кавычками, отчего ж не работает, пишет "не удается найти указанный файл", башка лопнула уже



Set WshShell = WScript.CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim objArgs

Set objArgs = WScript.Arguments				
ext=FSO.GetFile(objArgs(0)) 				
ext=FSO.GetParentFolderName(ext)		' путь к папке, на которую ссылаемся	
Set Folder = FSO.GetFolder(ext)				' отсюда возьмём имя символической ссылки

WshShell.Run "mklink /D "+"""C:\111\"+Folder.Name+""" """+ext+""""

WScript.Quit 

2

Re: VBS: WshShell.Run "mklink...

Заменяете WshShell.Run на WScript.Echo, смотрите какая командная строка получается и разбираетесь, почему она не работает. Вопрос не имеет отношения ни к WSH, ни к VBS.

3 (изменено: qsedftghk, 2023-09-16 00:13:40)

Re: VBS: WshShell.Run "mklink...

Именно так и было сделано до того, как была создана тема.
Строка получается -> mklink /D "C:\111\нужная папка" "нужная папка"

Но WshShell.Run не обрабатывает получившуюся строку. В обыкновенном bat`нике данная строка нормально выполняется.

Именно поэтому и пишу сюда. И, непонятно, с какого перепугу это вопрос не относится к vbs, когда скрипт vbs-ский.

4 (изменено: Мальчик-гей, 2023-09-16 00:35:27)

Re: VBS: WshShell.Run "mklink...

Извиняюсь, не сообразил. Вопрос не имел бы отношения к VBS, если бы mklink была внешней утилитой и почему-то не работала, но это внутренняя команда cmd.exe и без помощи cmd.exe она работать не будет. То есть не удивительно, что не удаётся найти файл mklink.exe, например. Таким образом, вопрос о том как вызвать извне команду cmd.exe. Ну, так

cmd /c команда

5 (изменено: qsedftghk, 2023-09-16 01:01:04)

Re: VBS: WshShell.Run "mklink...

Да, так работает. Это я не учёл. Спасибо. Правда мелькает окно cmd`шное, а тогда смысла в vbs нет, можно и батником делать. А хотелось бы незаметненько сделать. Не критично, но не красиво.

ЗЫ. А, нет, это я все продолжаю тупить...
Вообщем, спасибо, всё заработало как надо, вот правильная строка:

WshShell.Run "cmd /c mklink /D "+"""C:\111\"+Folder.Name+""" """+ext+"""",0,false