Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Eine Datei via Batch o.ä. an alle angeschlossenen Wechseldatenträger senden

Frage Entwicklung Batch & Shell

Mitglied: jap-81

jap-81 (Level 1) - Jetzt verbinden

20.02.2011 um 06:47 Uhr, 5352 Aufrufe, 7 Kommentare

Guten Tag alle zusammen,

ich habe ein Problem bzw. eine Frage in der mir vieleicht hier jemand helfen kann. Ich suche eine Batch, oder vieleicht etwas ähnliches, die es mir erlaubt eine beliebige Datei auf alle am Rechner angeschlossenen Wechseldatenträger gleichzeitig zu senden.
Mein Porblem ist, dass ich keine Ahnung von Batch habe.

Die Porblemstellung ist folgende. EIn Sportverein stellt bestimmte Videodateien, Dateien von Spielen anderer Vereine, seinen Spielerinnen zur Anschauungszwecken zur Verfügung. Nun müssen derzeit die Dateien in zeitaufwendiger Kleinarbeit einzeln auf USB Sticks geladen werden.
Der Gedange ist alle oder zumindest einen grossen Teil der Sticks an den Rechner anzuschliessen und dann via Batch die Datei gleichzeitig an alle zu senden. Sicher leidet die Geschwindigkeit darunter aber man kann ja wärenddessen andere Sachen erledigen und muss nicht immer Stick rein Stick raus spielen.


Vieleicht hat ja jemand hier eine helfande Idee


Vielen Dank fürs lesen

und einen entspannten Sonntag
Mitglied: 76109
20.02.2011 um 12:23 Uhr
Hallo jap-81!

Dieses VB-Script (*.vbs) würde zunächst mal nacheinander die Laufwerksbuchstaben der Wechseldatenträger in einer MsgBox ausgeben
01.
    Const Removable = 1 
02.
 
03.
    Dim Fso, Drive 
04.
     
05.
    Set Fso = CreateObject("Scripting.FileSystemObject") 
06.
     
07.
    For Each Drive In Fso.Drives 
08.
        If Drive.DriveType = Removable And Drive.IsReady = True Then 
09.
            MsgBox Drive.DriveLetter     
10.
        End If 
11.
    Next
wobei alle Wechseldatenträger erkannt werden, also z.B. auch Speicherkarten in Card-Reader... Um dies gegebenenfalls auszuschließen, könnte noch das FileSystem der Sticks z.B. "FAT32" oder die Größe des Speicherplatzes mit einbezogen werden?

Gruß Dieter
Bitte warten ..
Mitglied: BluBb-mADe
20.02.2011 um 12:50 Uhr
Leider lassen sich auch USB-Sticks problemlos auf NTFS Formatieren...

Soll diese Batch-Datei viele Dateien Verschieben?

Also eine vollständige automatisierung halte ich für nur sehr schwer möglich.
Aber nach anfangseinstellungen sollte das Kopieren problemlos automatisiert werden können.
Wenn die Datei auf der Festplatte liegt, sollten sich die Geschwindigkeitseinbußen eigentlich im
Rahmen halten.

Ich schau mal was sich da machen lässt...

Der Ansatz von Dieter, die Wechseldatenträger über vbs zu ermitteln ist schon mal gar nicht übel...
Was ist das eigentlich für ein Rechner mit so vielen USB-Ports?
Oder habt ihr nur einen großen USB-Hub?

Gruß
BluBb_mADe

*Edit
Ein sinnvollter Tipp wäre vllt auch noch GCopy
Bitte warten ..
Mitglied: NetWolf
20.02.2011 um 12:59 Uhr
Hallo,

klar gibt es da hundert Ideen/Möglichkeiten, z.B.:

- eine Homepage von der sich die Mitglieder die Dateien downloaden können
- Free File Hoster (eine "Festplatte" im Internet) von der sich die Mitglieder die Dateien downloaden können (z.B. http:\\www.wuala.com)
- ein FTP-Server
- die Dateien erst mal zu einem Paket packen (ZIP). Also ein selbstentpackendes Archiv erstellen.
- mit einem Synchronisierungsprogramm die Daten kopieren

Gruß
Wolfgang
Bitte warten ..
Mitglied: jap-81
20.02.2011 um 13:00 Uhr
Hi,

es wird ein bzw mehrere USB Hubs verwendet. Es handelt sich dabei immer nur um ein File (Videodatei).
Vieleicht sollte ich noch erwähnen das es sich um Windows7 handelt.
Bitte warten ..
Mitglied: Friemler
20.02.2011 um 14:00 Uhr
Hallo jap-81,

versuche mal Dieses Skript:
01.
@echo off 
02.
 
03.
setlocal enabledelayedexpansion 
04.
 
05.
set "DestDir=Test" 
06.
set "WithLog=1" 
07.
 
08.
 
09.
set "SrcFiles=%*" 
10.
set "BlockBegin=0" 
11.
set "ValidDrive=0" 
12.
 
13.
wmic /output:"%Temp%\WMICOut.txt" logicaldisk where description='Wechseldatenträger' get Name,FileSystem /value 
14.
 
15.
for /f "tokens=1,2 delims==" %%i in ('type "%Temp%\WMICOut.txt"') do ( 
16.
  if /i "%%i" equ "FileSystem" set "BlockBegin=1" 
17.
  if "!BlockBegin!" equ "1" if "%%j" neq "" set "ValidDrive=1" 
18.
 
19.
  if "!BlockBegin!" equ "0" if "!ValidDrive!" equ "1" ( 
20.
    set "Drive=%%j" 
21.
    call :ProcessDrive 
22.
    set "ValidDrive=0" 
23.
24.
 
25.
  set "BlockBegin=0" 
26.
27.
 
28.
del "%Temp%\WMICOut.txt" 
29.
 
30.
if "%WithLog%" equ "1" pause 
31.
exit /b 
32.
 
33.
 
34.
 
35.
:ProcessDrive 
36.
  setlocal disabledelayedexpansion 
37.
 
38.
  if not exist "%Drive%\%DestDir%" ( 
39.
    md "%Drive%\%DestDir%" 
40.
41.
 
42.
  for %%f in (%SrcFiles%) do ( 
43.
    if "%WithLog%" equ "1" echo Kopiere %%~f nach %Drive%\%DestDir% ... 
44.
    if "%WithLog%" equ "1" (copy "%%~f" "%Drive%\%DestDir%") else (copy "%%~f" "%Drive%\%DestDir%" > NUL) 
45.
    if "%WithLog%" equ "1" echo. 
46.
47.
 
48.
  if "%WithLog%" equ "1" echo. 
49.
 
50.
  endlocal 
51.
exit /b
Die Quelldateien können mit der Maus markiert werden und dann per Drag & Drop auf das Icon des obigen Batchfiles gezogen werden.

In Zeile 5 kann ein Zielordner angegeben werden, in dem die Dateien auf den Sticks abgelegt werden. Wenn dieser nicht existiert, wir er in Zeile 39 neu angelegt.

Wenn der Variablen WithLog in Zeile 6 der Wert 1 zugewiesen wird, so wie in obigem Code, werden die Kopiervorgänge auf dem Bildschirm protokolliert und nachdem die Dateien auf alle USB-Sticks kopiert wurden, muss wegen dem Pause-Befehl in Zeile 30 eine Taste gedrückt werden, um das Skript zu beenden. Wenn WithLog in Zeile 6 der Wert 0 (oder etwas anderes) zugewiesen wird, erfolgt keine Bildschirmausgabe und das Skript wird auch von selbst beendet.

Der WMIC-Befehl in Zeile 13 ermittelt alle am Rechner angeschlossenen Wechseldatenträger. Wie User didi1951 schon bemerkt hat, können darunter auch die Speicherkarten in Kartenlesern oder auch USB-Festplatten fallen. USB-Festplatten also vor der Kopieraktion abklemmen und aus Kartenlesern die Speicherkarten herausnehmen. In der FOR-Schleife (Zeile 15-26) wird nämlich nur dann das Unterprogramm ProcessDrive (in dem die Dateien kopiert werden) aufgerufen, wenn ein Wechseldatenträger mit formatiertem Speichermedium gefunden wird.

[EDIT]
Aufgrund von Verbesserungsvorschlägen von bastla habe ich das Skript nochmal geändert, siehe mein nächstes Posting.
[/EDIT]

Gruß
Friemler
Bitte warten ..
Mitglied: bastla
20.02.2011 um 14:27 Uhr
@Friemler
Einige Anmerkungen:

Auch wenn es hier ziemlich egal sein dürfte - nur für die Verwendung der Schalter "BlockBegin" und "ValidDrive" braucht's keine "delayedExpansion" - wenn Du anstelle von "1" einen beliebigen Wert zuweist und anstelle von "0" gar nix, kannst Du einfach mit "if defined" den Zustand abfragen.
Die Verwendung von "wmic" setzt Admin-Rechte voraus - daher würde ich eher (temporäres) VBScript verwenden - zB
For Each D In CreateObject("Scripting.FileSystemObject").Drives:If D.DriveType=1 And D.IsReady Then:WScript.Echo D.DriveLetter:End If:Next
(Achtung - liefert nur den Buchstaben, keinen ":")

[Edit] Der Ordnung halber fehlendes Leerzeichen nach "1" ergänzt [/Edit]
Was alle Vorschläge bisher nicht berücksichtigen ist der Wunsch,
die Datei gleichzeitig an alle zu senden
Dazu könnten dann eigentlich nur mehrere Kopiervorgänge (zB durch Starten eines weiteren Batches mit Übergabeparametern "Quelle" und - an den jeweiligen Laufwerksbuchstaben angepasst - "Ziel") parallel gestartet werden ...
Einen hab ich noch :
Um die "wmic"-Ausgabe (falls Du dabei bleiben willst) unmittelbar in einer "for"-Schleife zu verwerten, könntest Du das auf folgender Basis versuchen:
for /f "skip=2 tokens=2-3 delims=," %%i in ('"wmic logicaldisk where description='Wechseldatenträger' get Name,FileSystem /value /format:csv"') do if "%%j" neq "" echo %%i
Grüße
bastla
Bitte warten ..
Mitglied: Friemler
20.02.2011 um 14:55 Uhr
Hi bastla,

ich habe das Skript aufgrund Deiner durchaus sinnvollen Verbesserungsvorschläge nochmal geändert. Wobei ich aber glaube, dass das "gleichzeitige kopieren" der Dateien nicht wörtlich gemeint war.

Dein Vorschlag, die Ausgabe von WMIC im CSV-Format auszuwerten funktioniert nur, wenn man das Gleichheitszeichen der WHERE-Klausel und das Komma zwischen FileSystem und Name beim GET mit ^ escaped und natürlich %%i und %%j vertauscht . Aber selbst dann kommt es wieder zu Problemen wegen der fehlerhaften Ausgabe von WMIC im ASCII-Mode unter Windows 7, hatten wir letztens schonmal in diesem Thread. Deshalb die Ausgabe von WMIC am besten immer durch TYPE ausgeben lassen und diese Ausgabe auswerten.

Jetzt aber das Skript:
01.
@echo off 
02.
 
03.
setlocal 
04.
 
05.
set "DestDir=Test" 
06.
set "WithLog=1" 
07.
 
08.
set "SrcFiles=%*" 
09.
set "VBScript=%Temp%\GetDriveLetters.vbs" 
10.
 
11.
> "%VBScript%" echo For Each D In CreateObject("Scripting.FileSystemObject").Drives 
12.
>>"%VBScript%" echo   If D.DriveType=1 And D.IsReady Then 
13.
>>"%VBScript%" echo     WScript.Echo D.DriveLetter 
14.
>>"%VBScript%" echo   End If 
15.
>>"%VBScript%" echo Next 
16.
 
17.
for /f %%i in ('cscript /nologo "%VBScript%"') do ( 
18.
  set "Drive=%%i:" 
19.
  call :ProcessDrive 
20.
21.
 
22.
del "%VBScript%" 
23.
 
24.
if "%WithLog%" equ "1" pause 
25.
exit /b 
26.
 
27.
 
28.
 
29.
:ProcessDrive 
30.
  if not exist "%Drive%\%DestDir%" ( 
31.
    md "%Drive%\%DestDir%" 
32.
33.
 
34.
  for %%f in (%SrcFiles%) do ( 
35.
    if "%WithLog%" equ "1" echo Kopiere %%~f nach %Drive%\%DestDir% ... 
36.
    if "%WithLog%" equ "1" (copy "%%~f" "%Drive%\%DestDir%") else (copy "%%~f" "%Drive%\%DestDir%" > NUL) 
37.
    if "%WithLog%" equ "1" echo. 
38.
39.
 
40.
  if "%WithLog%" equ "1" echo. 
41.
exit /b
Gruß
Friemler
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell, Log Datei auslesen, bei Änderungen E-Mail senden (12)

Frage von swissbull zum Thema Batch & Shell ...

Batch & Shell
Neuere Datei per Batch ausfinding machen (2)

Frage von chattie zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (22)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...