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
GELÖST

Brauche Befehl die eine Datei auswählt, bei der der Name unterschiedlich sein kann

Frage Entwicklung Batch & Shell

Mitglied: masterhinz

masterhinz (Level 1) - Jetzt verbinden

13.11.2009, aktualisiert 14:59 Uhr, 4061 Aufrufe, 8 Kommentare

Hi kollegen,

es geht um folgendes:

ich möchte über den unten folgenden Befehl eine VHD Datei an Windows7 anfügen.

"select vdisk file="E:\WindowsImageBackup\%COMPUTERNAME%\Backup~1\e41ecb27-be3c-11de-9dcc-806e6f6e6963.vhd

attach vdisk"

Mein Problem ist dass diese bat dabei auf beliebig vielen PCs funktionieren soll.... das einzige was sich von rechner zu rechner ändert ist der Dateiname der .vhd datei. Wie muss also der Befehl lauten damit ich die Bat auf jedem rechner ausführen kann?

Ich hab wirklich schon viel gesucht und geguckt.... bin auch auf variablen und for tipps gestoßen. Leider bin ich eigentlich überhaupt kein Probgrammierer und kenne mich extrem wenig damit aus... vielleicht kann mir jemand den richtigen tipp geben! Danke im Vorraus!

Grüße aus Hannover
Mitglied: bastla
13.11.2009 um 15:14 Uhr
Hallo masterhinz!

Wenn der Pfad immer gleich ist und es jeweils nur eine .vhd-Datei gibt, sollte
01.
@echo off & setlocal 
02.
set "VHD=" 
03.
for %%i in ("E:\WindowsImageBackup\%COMPUTERNAME%\Backup~1\*.vhd") do set "VHD=%%i" 
04.
if not defined VHD echo Keine Datei gefunden! & goto :eof 
05.
select vdisk file="%VHD%" 
06.
attach vdisk
genügen ...

Grüße
bastla
Bitte warten ..
Mitglied: masterhinz
13.11.2009 um 18:16 Uhr
vielen dank für die schnelle Hilfe!
Bitte warten ..
Mitglied: 0belixx
05.04.2013, aktualisiert um 22:04 Uhr
Hi bastla,
Hast du auch eine Idee wenn 2 vhd Dateien da sind. Hatte schon die Idee die Größe zu vergleichen habe es aber noch nicht hinbekommen.

Gruß 0belixx
Bitte warten ..
Mitglied: bastla
05.04.2013 um 23:06 Uhr
Hallo Obelixx!

Wie meinst Du das genau? Wenn zB "attach" für beide ausgeführt werden soll, etwa so:
01.
@echo off & setlocal 
02.
for %%i in ("E:\WindowsImageBackup\%COMPUTERNAME%\Backup~1\*.vhd") do ( 
03.
    select vdisk file="%%i" 
04.
    attach vdisk 
05.
)
Grüße
bastla
Bitte warten ..
Mitglied: 0belixx
05.04.2013 um 23:14 Uhr
Hi
In der Regel ist es ja die größere der beiden vhds. Worum es mal 1 und mal 2 gibt weiß ich nicht. Ich würde gern die größere oder auch die neuere (ist die selbe vhd) einbinden.

Der Hintergrund ist das es verschieden PC s und auch mal leider 2 vhd sind die ich über eine Batch (dispart) mounten möchte. Wie gesagt bei einer vhd hab ich eine Lösung.

Gruß 0belixx
Bitte warten ..
Mitglied: bastla
05.04.2013, aktualisiert 06.04.2013
Hallo Obelixx!

Versuch es so:
01.
@echo off & setlocal 
02.
set "VHD=" 
03.
set "Max=0" 
04.
for %%i in ("E:\WindowsImageBackup\%COMPUTERNAME%\Backup~1\*.vhd") do call :ProcessFile "%%i" 
05.
if not defined VHD echo Keine Datei gefunden! & goto :eof 
06.
select vdisk file="%VHD%" 
07.
attach vdisk 
08.
REM weitere Arbeitsschritte hier einfügen 
09.
goto :eof 
10.
 
11.
:ProcessFile 
12.
for %%a in (%1) do set "Size=000000000000%%~za" 
13.
if "%Size:~-13%" gtr "%Max%" ( 
14.
    set "Max=%Size:~-13%" 
15.
    set "VHD=%~1" 
16.
17.
goto :eof
Da die Dateigrößen vermutlich über 2.147.483.647 (= 2 ^ 31 - 1 und die größte posizive Zahl, mit der CMD rechnen bzw numerisch vergleichen kann) Bytes hinausgehen werden, erfolgt der Größenvergleich mit Strings (siehe die Anführungszeichen in der Zeile 13) - dazu müssen die Größenangaben (durch das Hinzufügen der führenden Nullen und das Verwenden der daraus resultierenden letzten 13 Stellen) auf die gleiche Länge gebracht werden.

[Edit] ... und das alles nach dem Motto: "Warum einfach, wenn's auch kompliziert geht?"

Alternative:
01.
@echo off & setlocal 
02.
set "Pfad="E:\WindowsImageBackup\%COMPUTERNAME%\Backup~1" 
03.
 
04.
set "VHD=" 
05.
for /f "delims=" %%i in ('dir /b/a-d/os "%Pfad%\*.vhd" 2^>nul') do set "VHD=%Pfad%\%%i" 
06.
if not defined VHD echo Keine Datei gefunden! & goto :eof 
07.
select vdisk file="%VHD%" 
08.
attach vdisk
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: 0belixx
05.04.2013 um 23:30 Uhr
Hi

Ja werd ich ausprobieren. Vielen Dank

Gruß 0belixx
Bitte warten ..
Mitglied: 0belixx
07.04.2013, aktualisiert 08.04.2013
Hi bastla,

das klappt gut.

Vielen Dank 0belixx

01.
@echo off & setlocal 
02.
FOR /f %%f IN (c:\temp\lw.txt) DO set LW=%%f 
03.
echo %LW% 
04.
set "VHD="\ 
05.
for /f "delims=" %%h in ('dir /b/a-d/os/s "%LW%\WindowsImageBackup\*.vhd" 2^>nul') do set "VHD=%%h" 
06.
if not defined VHD echo Keine Datei gefunden! & goto :failure 
07.
 
08.
Echo select vdisk file="%VHD%" >>C:\Temp\01.txt 
09.
Echo attach vdisk >>C:\Temp\01.txt 
10.
Echo select partition 1 >>C:\Temp\01.txt 
11.
Echo assign Letter=x >>C:\Temp\01.txt 
12.
 
13.
 
14.
 
15.
Echo select vdisk file="%VHD%" >>C:\Temp\02.txt 
16.
Echo select partition 1 >>C:\Temp\02.txt 
17.
Echo remove Letter =x >>C:\Temp\02.txt 
18.
Echo detach vdisk >>C:\Temp\02.txt 
19.
 
20.
diskpart /s C:\Temp\01.txt 
21.
TIMEOUT /T 10 /NOBREAK >Nul 
22.
if %errorlevel% == 0 (goto :success) else (goto :failure) 
23.
 
24.
:success 
25.
Echo %date% %time:~0,2%-%time:~3,2%-%time:~6,2% - "Image Prüfung --> OK" >>%LW%\image_log.log 
26.
::pause 
27.
goto :unmount 
28.
:failure 
29.
Echo %date% %time:~0,2%-%time:~3,2%-%time:~6,2% - "Fehler im Image" >>%LW%\image_log.log 
30.
goto :ende 
31.
 
32.
 
33.
:unmount 
34.
diskpart /s C:\Temp\02.txt 
35.
 
36.
del C:\Temp\01.txt 
37.
del C:\Temp\02.txt 
38.
 
Das ist jetz das Endresultat

Gruss 0belixx
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

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

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

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

Frage von MegaGiga zum Thema Hardware ...