Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

heinervdm

Technik-Admin

Dabei seit: 02.10.2002

Beiträge: 3 772

 

1 Zum Seitenanfang

Dienstag, 8. August 2006, 13:15

Batch Script, prüfen ob Laufwerk existiert.

Hi,
ich will ein kleines Batch script schreiben, dass mir Bilder von meinem Cardreader in einen Bestimmten Ordner kopiert.
Das kopieren klappt wunderbar, nur mein Cardreader hat 4 Laufwerke, und ich werde verschiedene Arten von Karten haben, und will nur ein Script dafür haben, weil meine Mutter das bedienen soll ;).

Also habe ich mir gedacht, mache ich einen Laufwerkscheck.
if exists X:\ erkennt das ganze zwar wunderbar, aber bei den Laufwerken, in denen keine Karte steckt kommt eine Störende Fehlermeldung, dass kein Datenträger eingelgt wurde.
Daher bin ich hingegangen und wollte mit fsutil fsinfo volumeinfo X:\ prüfen ob das Laufwerk existiert.
Hier ist nun das Problem, wenn ich mit %%g ausgeben lasse, steht dort

Fehler: bei den Laufwerken wo keine Karte drinsteckt, und Volumname und noch ein paar sachen bei denen in denen eine Karte steckt. Aber wenn ich if %%g=="Volumname" kommt als ergebnis immer false raus.
und wenn ich if %%g NEQ "Fehler:" mache kommt immer true...

Ich hoffe mir kann dabei einer helfen...

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@echo off
set Ziel=I:\test

FOR /D %%d IN (J:\ L:\ M:\ N:\) DO (
  FOR /F %%g IN ('fsutil fsinfo volumeinfo %%d') DO (
    if %%g NEQ "Fehler:" (
      call:bildercopy %%d
      goto eof
    )
  )
)
goto error1

:bildercopy
  dir %1
  goto eof
goto eof

:error1
echo Chipkarte ist nicht richtig eingesteckt!
pause
goto eof


:eof
Über mich: www.heinervdm.de
Persönlich Mitteilungen an mich bitte als PN (nicht Email) hier im Forum. ICQ und Skype bitte nur in Notfällen.
 

apple

Moderator

Dabei seit: 29.01.2003

Beiträge: 928

 

2 Zum Seitenanfang

Dienstag, 8. August 2006, 14:12

Ist zwar schon lange her aber ich denke es gibt doch sowas wie "if exist". Einfach die möglichen Laufwerksbuchstaben durchgehen und schauen ob ein .*jpg darin zu finden ist.

mfg apple
Zur Unterhaltung einer Party trägt niemand so viel bei wie diejenigen, die gar nicht da sind.
Audrey Hepburn, Schauspielerin


Don't use thx-sry-plz
 

asterix

Routinier

Dabei seit: 03.12.2005

Beiträge: 363

 

3 Zum Seitenanfang

Dienstag, 8. August 2006, 14:51

mal so eine idee:
schon gedacht an ein mini-"programm"(c,c++,java,..), das versucht auf dem jeweiligen laufwerk eine datei zu speichern und anschließend gleich löscht.. und falls das nicht erfolgreich gemacht werden kann, dann ist keine karte drinnen oder halt falsch eingelegt.. ;)
lg ,asterix
gawk; talk; time; grep; cd ~; wine; talk; touch; unzip; touch; strip; gasp; finger; gasp; mount; fsck; more; yes; gasp; umount; make clean; sleep

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »asterix« (8. August 2006, 15:37)

 

MartyMcFly

Foren Gott

Dabei seit: 04.06.2003

Beiträge: 3 137

 

4 Zum Seitenanfang

Dienstag, 8. August 2006, 15:39

Probier mal:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@echo off
set Ziel=I:\test

FOR /D %%d IN (J:\ L:\ M:\ N:\) DO (
  FOR /F %%g IN ('fsutil file createnew %%dlabel.xxx 100') DO (
   if %%g == Die (
      del %%dlabel.xxx
      call:bildercopy %%d
      goto eof
    )
  )
)
goto error1

:bildercopy
  dir %1
  goto eof
goto eof

:error1
echo Chipkarte ist nicht richtig eingesteckt!
pause
goto eof


:eof


Gruss
Marty
 

heinervdm

Technik-Admin

Dabei seit: 02.10.2002

Beiträge: 3 772

 

5 Zum Seitenanfang

Dienstag, 8. August 2006, 22:22

Edit: gelöst, ergebnis siehe unten.

@apple Da hab ich doch geschreiben, dass das funktioniert, nur kommt da ne Fehlermeldung, die ich nicht haben will, bei den restlichen 3 Laufwerken ;)

@marty
bei deiner Version kommt die selbe Fehlermeldung, wie bei if exist X:\

@all
Ich habs jetzt folgendermaßen gemacht, nur habe ich jetzt dass Problem, dass mein Code zum kopieren nicht mehr geht...
Das neue Verzeichnis wird noch erstellt, aber keine datei mehr kopiert...
Sieht da vieleicht jemand nen Fehler? ansonsten muss ich vieleicht doch ein C Programm dafür schreiben...

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@echo off
set Ziel=I:\test

FOR /D %%d IN (J: L: M: N:) DO (
  @fsutil fsinfo volumeinfo %%d
  if not errorlevel 1 (
    echo Karte gefunden in Laufwerk %%d
    set /A N = 1
    set Drive = %%d
    :loop2
      if not exist %Ziel%\%N% (
        md %Ziel%\%N%
        for /R %Drive% %%f in (*.*) do (
          xcopy %Drive%\%%f %Ziel%\%N%
          del %Drive%\%%f
        )
        goto eof
      )
      set /A N += 1
    goto loop2
  )
)
goto error1

:error1
echo Chipkarte ist nicht richtig eingesteckt!
pause
goto eof

:eof


Die Ausgabe sieht nun folgendermaßen aus:

Zitat

I:\test>test.bat
Fehler: Das Gerät ist nicht bereit.

Volumename :
Volumeseriellennummer : 0x65b10ef
Maximale Komponentenlänge : 255
Dateisystemname : FAT
Behält die Groß-/Kleinschreibung von Dateinamen
Unterstützt Unicode-Dateinamen
Karte gefunden in Laufwerk L:
I:\test\Autorun.inf
Das System kann das angegebene Laufwerk nicht finden.
I:\test\Kopie von test.bat
Das System kann das angegebene Laufwerk nicht finden.
I:\test\start.bat
Das System kann das angegebene Laufwerk nicht finden.
I:\test\test.bat
Das System kann das angegebene Laufwerk nicht finden.

Für mich sieht das so aus, als ob das %Drive% in der forschleife nicht richtig funktioniert...
mit %%d in der for schleife wollte das script garnicht laufen...

Lösung
Die Lösung war jetzt, das kopieren in eine Unterfunktion zu packen, jetzt gehts...
Also Batch Programmierung versteh ich nicht so wirklich...
Shell scripting für Linux mag ich da doch wesentlich lieber...

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@echo off
set Ziel=I:\test

FOR /D %%d IN (J: L: M: N:) DO (
  @fsutil fsinfo volumeinfo %%d
  if not errorlevel 1 (
    echo Karte gefunden in Laufwerk %%d
    call:bildercopy %%d
    goto eof
  )
)
goto error1

:bildercopy
    set /A N = 1
    :loop2
      if not exist %Ziel%\%N% (
        md %Ziel%\%N%
        for /R %1 %%f in (*.jpg) do (
          xcopy %%f %Ziel%\%N%
          del %%f
        )
        goto eof
      )
      set /A N += 1
    goto loop2
goto eof

:error1
echo Chipkarte ist nicht richtig eingesteckt!
pause
goto eof

:eof