Skocz do zawartości


tablety.pl
Zdjęcie

Problem ze skryptem ...




  • Zamknięty Temat jest zamknięty
4 odpowiedzi w tym temacie

#1 Matthew0k

Matthew0k

    First Rank

  • Użytkownicy
  • 7 postów

Napisano 13 05 2009 - 16:26

Witam.

Mój problem wygląda tak:

Posiadam pamięć Cruzer Micro U3 8Gb, jest to pamięć z technologią u3 więc wyświetla się jako 2 napędy w systemie (cd i dysk wymienny).

Dotychczas korzystałem ze skryptu :
CODE-BOX

Dim System
Dim Drive
Dim FileName
Dim objShell
Dim File

FileName = "flashdrive.key"
If Len(FileName) = 0 Then Wscript.Quit
Set System = CreateObject("Scripting.FileSystemObject")
For Each Drive In System.Drives
If Drive.IsReady Then
For Each File In System.GetFolder(Drive & "\").Files
If LCase(File.Name) = FileName Then
Set objShell = CreateObject("WScript.Shell")
objShell.Run (Drive & "\ffportable\firefox.exe")
End If
Next 'File
End If
Next 'Drive


...jednak jak widać jest to rozwiązanie mało doskonałe i nie zawsze funkcjonuje ze względu na host skryptów windows a raczej jego brak na niektórych systemach,
moja próba napisania czegoś podobnego w batch'u nie odniosła skutku //brak dysku przy listowaniu//

CODE-BOX

@echo off
if exist c:\"key706249779462814.jpg" goto c

if exist d:\"key706249779462814.jpg" goto d

if exist e:\"key706249779462814.jpg" goto e

if exist f:\"key706249779462814.jpg" goto f

if exist g:\"key706249779462814.jpg" goto g

if exist h:\"key706249779462814.jpg" goto h

if exist i:\"key706249779462814.jpg" goto i

if exist j:\"key706249779462814.jpg" goto j

if exist k:\"key706249779462814.jpg" goto k

if exist l:\"key706249779462814.jpg" goto l

if exist m:\"key706249779462814.jpg" goto m

if exist n:\"key706249779462814.jpg" goto n

if exist o:\"key706249779462814.jpg" goto o

if exist p:\"key706249779462814.jpg" goto p

if exist q:\"key706249779462814.jpg" goto q

if exist r:\"key706249779462814.jpg" goto r

if exist s:\"key706249779462814.jpg" goto s

if exist t:\"key706249779462814.jpg" goto t

if exist u:\"key706249779462814.jpg" goto u

if exist v:\"key706249779462814.jpg" goto v

if exist w:\"key706249779462814.jpg" goto w

if exist x:\"key706249779462814.jpg" goto x

if exist y:\"key706249779462814.jpg" goto y

if exist z:\"key706249779462814.jpg" goto z
:c
c:
goto ok
;)
d:
goto ok
:e
e:
goto ok
:f
f:
goto ok
:g
g:
goto ok
:h
h:
goto ok
:i
i:
goto ok
:j
j:
goto ok
:k
k:
goto ok
:l
l:
goto ok
:m
m:
goto ok
:n
n:
goto ok
:)
o:
goto ok
:)
p:
goto ok
:q
q:
goto ok
:r
r:
goto ok
:s
s:
goto ok
:t
t:
goto ok
:u
u:
goto ok
:v
v:
goto ok
:w
w:
goto ok
:x
X:
goto ok
:y
y:
goto ok
:z
z:
goto ok
:ok
explorer %cd%



Proszę o pomoc w rozwiązaniu mojego problemu czyli w jaki sposób zapisać w zmiennej w batch'u literę partycji mojego dysku wymiennego ?

Skrypt sprawdzający jest wywoływany poprzez plik autorun.inf z spreparowanego obrazu iso i ma na celu zlokalizowanie litery dysku wymiennego.
Niestety w batch'u nie mam pojęcia jak zrealizować tą opcje :)

#2 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 13 05 2009 - 17:45

Ale co ten skrypt ma robić? W pliku bat możesz zlokalizować literę dysku wymiennego z poziomu wmic:

wmic path win32_LogicalDisk where DeviceID="G:" get VolumeName, DeviceID /format:list

DeviceID="G:" - tu wpisujesz nazwę litery dysku wymiennego, jeśli nie ma dysku podpiętego będzie komunikat "Brak dostępnych wystąpień"

Dołączona grafika

#3 Matthew0k

Matthew0k

    First Rank

  • Użytkownicy
  • 7 postów

Napisano 13 05 2009 - 19:18

Wspomniany skrypt ma przekazać do zmiennej literę dysku wymiennego o konkretnym numerze seryjnym lub zawierającego plik o podanej nazwie.

Moja koncepcja jest taka :
Skrypt odpalony z auto startu cd ma zainicjować program/skrypt na partycji dysku wymiennego (konkretnego dysku gdyż w systemie funkcjonuje czytnik kart pamięci więc dysków jest więcej) oczywiście dzięki za wskazówkę ;)

#4 Kolega Dudysa

Kolega Dudysa

    Good Rank

  • Na emeryturze
  • 700 postów
  • Płeć:Mężczyzna

Napisano 14 05 2009 - 10:52

No nie to z poziomu wmic tego nie idzie zrobić, można wykonywać na urządzeniu jakieś podstawowe zadania, jak restart, sprawdzenie stanu dysku, itp..

To jak już na VBS, skorzystać z klasy win32_LogicalDisk, w prostym przykładzie będzie szukał litery dysky wymiennego, po czym wyświetli jego wybrane właściwości:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from win32_LogicalDisk where DeviceID = 'G:'")
For Each objItem in colItems
	Wscript.Echo "Dysk: " & objItem.DeviceID
	Wscript.Echo "Typ Nośnika: " & objItem.DriveType
	Wscript.Echo "Numer Seryjny: " & objItem.VolumeSerialNumber
	Wscript.Echo "Nazwa Dysku: " & objItem.VolumeName
	Wscript.Echo
Next

Dołączona grafika

Albo szukał po numerze seryjnym, przestawiaszw kodzie na właściwość:
VolumeSerialNumber

Set colItems = objWMIService.ExecQuery("Select * from win32_LogicalDisk where VolumeSerialNumber = 'WpiszNumerSeryjny'")

W tedy odszuka i wyświetli dysk wymienny o takim numerze seryjnym, ale reszta do rozpisania nie będzie taka prosta.

#5 Matthew0k

Matthew0k

    First Rank

  • Użytkownicy
  • 7 postów

Napisano 14 05 2009 - 12:41

Dzięki. Skrypt po edycji wygląda tak:

CODE-BOX

strComputer = "."
Set objShell = CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from win32_LogicalDisk where VolumeSerialNumber = '07B00092'")
For Each objItem in colItems
objShell.Run (objItem.DeviceID&"\root\FirefoxPortable\FirefoxPortable.exe")
Next


... nie znasz może aplikacji realizującej tą lub podobną funkcję ? Mój główny problem to brak WSH na hoście z win2000 ;/ wyłączone przez admina // niestety

:) Wszystko już działa :D dzięki za pomoc.

Rozwiązaniem mojego problemu było użycie konwertera VBS ==> EXE :) WSH nie jest wymagane a plik zajmuje tylko 10 KB więcej, pozytywna opcja.
Pozdrawiam i jeszcze raz dzięki za pomoc. [temat do zamknięcia]


Wróć do Windows PowerShell i skrypty


Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych