Проблема копирования файлов через xcopy с использованием VBScript - PullRequest
1 голос
/ 19 марта 2010

Я использую VBScript для копирования файлов с использованием xcopy. Проблема в том, что путь к папке должен быть введен пользователем. Предполагая, что я поместил этот путь в переменную, скажем h, как мне использовать эту переменную в команде xcopy?

Вот код, который я пробовал:

Dim WshShell, oExec, g, h
h = "D:\newfolder"

g = "xcopy $h D:\y\ /E"
Set WshShell = CreateObject("WScript.Shell")

Set oExec = WshShell.Exec(g)

Я также пытался &h, но это не сработало. Может ли кто-нибудь помочь мне выработать правильный синтаксис? Любая помощь приветствуется.

Ответы [ 3 ]

2 голосов
/ 19 марта 2010

Проблема может заключаться в том, что вы не используете кавычки должным образом. Попробуйте это

Dim WshShell, oExec,g,h 
h= Chr(34) & "D:\newfolder" & Chr(34)
g="xcopy " & h & " " & Chr(34) & "D:\y\" & Chr(34) & " /E"
Set WshShell = CreateObject("WScript.Shell")

Set oExec = WshShell.Exec(g)

Если в любом из путей есть пробелы, путь должен содержаться в кавычках, Chr (34) - это символ кавычки, поэтому, вставляя их в начало и конец пути, он оборачивает пути в кавычки.

Допустим, исходный путь - C: \ Documents and Settings. Если вы передадите это xcopy, он будет думать, что источником является «C: \ Documents», местом назначения будут «и», а аргументами будут «Настройки \». Вот почему ваши пути должны быть заключены в кавычки, если вы передаете xcopy «C: \ Documents and Settings» «C: \» / e, то он знает, что источником является «C: \ Documents and Settings», местом назначения является «C». : \ 'и аргументы' /e'.

0 голосов
/ 22 марта 2010

Переменные VBscript упоминаются только по их именам, поэтому префикс типа $ или & не требуется. Я предполагаю, что другие предложения будут работать

0 голосов
/ 19 марта 2010
g = "xcopy " & h & " D:\y\ /E"
...