Страница 2 из 3

Добавлено: Чт янв 10, 2008 08:35
Lari
2DrShark

Не смотря на то, что CmdLine=1, приведенный код

Код: Выделить всё

WshShell.SendKeys "{RIGHT}" 
WshShell.SendKeys "cd папка_которую нужно открыть" 
WshShell.SendKeys "{ENTER}"
открывает последний файл в панели, а не указанную папку? Так как переход в командную строку по нажатию на "->" происходит только в режиме детальной информации в панели, при отображении только имен папок курсор пепемещается на последний файл.

А при выполнении, например, WshShell.SendKeys "cd c:\games" в командной строке отображается: 34 с:\71-5? и побуквенный ввод с помощью SendKey дает тот же результат? Не пойму в чем ошибка :(

Добавлено: Чт янв 10, 2008 11:15
DrShark
Попробуй с использованием буфера обмена:

Код: Выделить всё

Dim WshShell
Set WshShell = CreateObject ("Wscript.Shell")
WshShell.SendKeys "{F7}"
WshShell.SendKeys "c:\games\"
WshShell.SendKeys "+{HOME}"
WshShell.SendKeys ("^C")
WScript.Sleep 500
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{PGUP}"
WshShell.SendKeys "+{F6}"
WshShell.SendKeys "^V"
WshShell.SendKeys "{ENTER}"
Только это не будет работать, если название папки кириллическое.

Добавлено: Чт янв 10, 2008 13:08
Lari
Результат вообщем-то тот же. В поле ввода имени папки (F7) вместо c:\games\ вводиться 3^\71-5 и как результат создается две папки 3^ и в ней 71-5 :)

а вот этого вообще не понял:

Код: Выделить всё

WshShell.SendKeys "{PGUP}" 
WshShell.SendKeys "+{F6}" 
WshShell.SendKeys "^V" 

Добавлено: Чт янв 10, 2008 13:26
DrShark
Lari писал(а):Результат вообщем-то тот же. В поле ввода имени папки (F7) вместо c:\games\ вводиться 3^\71-5 и как результат создается две папки 3^ и в ней 71-5
Что же, здесь я ничем помочь не могу... Попробуй на AutoIt подобный код выполнить, только там он проще будет -

Код: Выделить всё

Dim WshShell 
Set WshShell = CreateObject ("Wscript.Shell")
выбрасывай, вместо WshShell.SendKeys "{somekey}" используй Send ("{somekey}"), а часть WScript.Sleep n меняй на Sleep (n) или выбрасывай.
а вот этого вообще не понял:
Это переход к "папке" ".." и нажатие Shift+F6 - так активируется элемент текущего пути, т.е. адресная строка.

Добавлено: Чт янв 10, 2008 17:22
Volniy
Lari писал(а):НО еще плюс к этому нужно зайти в эту папку.
Пробуй такой вариант (исправлено на основе идеи Batya)

Код: Выделить всё

'=========================[ Start of file ]========================= 
Option Explicit 

Dim CurPath, NewFolder, CurFile, FileName, NPath, TempFile, SelFile
Dim WSH, FSO 
Set WSH = CreateObject ("Wscript.Shell") 
Set FSO = CreateObject("Scripting.FileSystemObject") 

CurPath = WScript.Arguments(0)   '"%P"
NewFolder = WScript.Arguments(1) '"%O"
CurFile = WScript.Arguments(2)   '"%L"
FileName = WScript.Arguments(3)  '"%N"

If UCase(NewFolder) = UCase(FileName) Then 
   WScript.Quit() 
End If 

NPath = CurPath & NewFolder 

If Not FSO.FolderExists(NPath) Then
   FSO.CreateFolder NPath
End If

If FSO.FolderExists(NPath) Then
  Set TempFile = FSO.OpenTextFile(CurFile, 1) 
   Do While Not TempFile.AtEndOfStream 
     Set SelFile = FSO.GetFile(TempFile.ReadLine) 
     If Not FSO.FileExists (NPath & "" & SelFile.Name) Then 
        FSO.MoveFile SelFile.Path , NPath & "" & SelFile.Name 
     End If 
  Loop 
  WSH.Run """" & "%COMMANDER_PATH%\totalcmd.exe""" _
          & " /O /S /L=""" & NPath & """", 8, False
End If


WScript.Quit() 
'=========================[  End of file  ]=========================

Добавлено: Чт янв 10, 2008 18:19
Batya
:)
Ребята, вы не перегрелись? Зачем изобретать велосипед?
Чем не устраивает

Код: Выделить всё

Dim WSH
Set WSH = CreateObject ("Wscript.Shell") 
WSH.Run "%COMMANDER_PATH%\totalcmd.exe /O /S /L=""" & NPath & """", 7, True 

Добавлено: Чт янв 10, 2008 21:42
Volniy
Batya писал(а)::)
Ребята, вы не перегрелись? Зачем изобретать велосипед?
Чем не устраивает
Вполне устраивает, только подглючивает ежели есть пробелы в пути к Тоталу.

А ты где раньше был? Пиво пил? (с) :lol:

ОК, исправил свой пост выше (имхо: бестолковый скрипт...)

Добавлено: Пт янв 11, 2008 09:40
Batya
Volniy писал(а):Вполне устраивает, только подглючивает ежели есть пробелы в пути к Тоталу.
А какие тут могут быть проблемы? Скрипт ведь из под TC запускается.
Volniy писал(а):А ты где раньше был? Пиво пил? (с)
Эх, если бы :roll:
Замотался на работе. Даже в инет зайти некогда.

Кстати, что-то меня наводит на мысль, что исходным скриптом с учетом
Lari писал(а):поэтому взял какой-то пример и написал то, что хотел.
мог быть вот этот.

Добавлено: Пт янв 11, 2008 14:43
Lari
О спасибо! :)
Теперь все работает!
Batya писал(а):Кстати, что-то меня наводит на мысль, что исходным скриптом с учетом
Lari писал(а):поэтому взял какой-то пример и написал то, что хотел.
мог быть вот этот.
нет другой... в этом то задача решена по созданию папки, смысл его переписывать.

Добавлено: Пт янв 11, 2008 19:36
Volniy
Batya писал(а):А какие тут могут быть проблемы? Скрипт ведь из под TC запускается.
А причем тут это? Если в пути/имени запускаемого на выполнение файла будет пробел и не будет дополнительных кавычек, тогда именем файла реально считается только то, что лежит до первого пробела, а все остальное параметрами командной строки. Скрипт выдавал ошибку "Система не ожет найти указаный файл". Просто проверь и убедишься сам.

Добавлено: Пн янв 14, 2008 12:27
Batya
Volniy
Ну хорошо, а так?

Код: Выделить всё

WSH.Run """%COMMANDER_PATH%\totalcmd.exe"" /O /S /L=""" & NPath & """", 7, True 

Добавлено: Пн янв 14, 2008 18:07
Volniy
Batya писал(а):Ну хорошо, а так?
Не, ты тогда точно что-то пил :wink: Я ведь сразу код исправил. Не заметил?

Добавлено: Пн янв 14, 2008 18:14
Batya
Volniy
:) Ну не смотрел я в твой код :roll:
Тогда все должно работать без проблем.
При каких путях у тебя не работает (конкретный пример)?

И непонятно, зачем лишние символы в начале WSH.Run?

Код: Выделить всё

"""" & "...

Добавлено: Пн янв 14, 2008 18:51
Volniy
Batya писал(а):При каких путях у тебя не работает (конкретный пример)?
c:\Program Files\wincmd
Batya писал(а):И непонятно, зачем лишние символы в начале WSH.Run?

Код: Выделить всё

"""" & "...
Это и есть те кавычки (это открывающая кавычка), о которых я тебе и говорю. Я специально наглядно это написал, вместо твоего варианта

Код: Выделить всё

WSH.Run """%COMMANDER_PATH%...
а на самом деле это одно и то же.

Добавлено: Вт янв 15, 2008 11:26
Batya
Volniy писал(а):а на самом деле это одно и то же.
Это я знаю, поэтому и спросил, зачем ты написал лишнее, но теперь понятно:
Volniy писал(а):наглядно
Volniy писал(а):c:\Program Files\wincmd
Все прекрасно работает. Ты, случайно, не забыл параметры кнопки указать в кавычках?

Код: Выделить всё

"%P" "%O" %L "%N"