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

Dateien kopieren und Zielfolder per Userinput angeben

Frage Entwicklung Batch & Shell

Mitglied: deadmanwalkin

deadmanwalkin (Level 1) - Jetzt verbinden

15.06.2010 um 14:44 Uhr, 2334 Aufrufe, 3 Kommentare

Hallo,

Ich arbeite im Bereich der Softwarevalidierung bei einem Unternehmen in der Pharma/Forschungsindustrie. Meine Arbeit besteht dadrin, Software gegen eine Spezifikation zu testen.

Im Zuge dieses Testens haben wir eine kleine .bat datei geschrieben, mit dem wir aus unseren SystemDaten die Datenbankrelevanten Dateien speichern, damit wir sie ggf. zu einem späteren Zeitpunkt wieder laden können.
Diese kleine .bat datei sieht wie folgt aus:
xcopy C:\LAB4\DB\ML*.* C:\DBbackup\backup\ML*.*

Somit landen alle Dateien die mit "ML" anfangen im Ordner "C:\DBbackup\backup".
Simpel, einfach, funktioniert.

da wir aber nicht nur eine DB speichern sondern pro Softwarevalidierung ~200, muss natürlich jede Datenbank umbenannt und in div. Unterorndner verschoben werden. Man will natürlich versuchen, Zeit zu sparen, daher dachte ich, man könnte das ganze ja etwas automatisieren.
Ich habe mich nun etwas eingelesen und bin aktuell bei diesem Code angelangt:
@ECHO OFF
ECHO.
ECHO Bitte den namen der Datenbank eingeben.
ECHO Format: "NAME" - Enter - F6 - Enter
ECHO (Die Anführungstriche sind Pflicht wenn der Name Leerzeichen enthält!)
ECHO.

FOR /F "tokens=*" %%A IN ('TYPE CON') DO SET FOLD=%%A
xcopy C:\LAB4\DB\ML*.* .\%FOLD%\ML*.*
es geht ein CMD Fenster auf, dort gibt man den Datenbanknamen ein und danach werden die Files in dem Ordner gespeichert den man angegeben hat (Als Unterordner in dem Ordner in dem die .bat Datei liegt). Hierbei gibt es nun ein paar Probleme, bei denen ich nicht weiterkomme:

a) will man Leerzeichen in dem Ordnernamen haben, muss man Anführungsstriche verwenden
b) man muss Enter -> F6/Strg+Z -> Enter drücken, damit die Datenbank wirklich gespeichert wird (aka die Dateien kopiert werden).
Beides erkenntlich aus den Kommentaren die ich reingeschrieben habe.

Gibt es nun innerhalb der Batchprogrammierung eine Möglichkeit, das Ganze etwas "geschickter" zu lösen? Eventuell dass man nur noch einmal Enter drücken muss oder wenigstens das F6 wegfällt? oder dass man keine Anführungsstriche mehr braucht, selbst wenn Leerzeichen vorhanden sind? .vbs dateien sind auf dem Rechner nicht ausführbar (scripting host disabled), daher bleibt nicht viel übrig, man muss also auf Batch zurückgreifen.

Ich würde mich freuen, wenn jemand eine (Teil-) Lösung hätte - oder mir im worst case zumindest bestätigen kann, dass ohne VBS der obige Code das Höchste der Gefühle ist.
Vielen Dank,
dmw
Mitglied: Biber
15.06.2010 um 15:31 Uhr
Moin, deadmenwalkin,

willkommen im Forum und im 3.Jahrtausend.

Die Batchprogrammierung hat sich schon in den letzten Jahrzehnten etwas weiterentwickelt.

Diese Krücke mit Aufruf von "Type con" ist ein Relikt aus der Zeit vor Erfindung der Alufolie...
...als die FDP noch mit dem Versprechen eines niedrigen, einfachen und gerechten Steuersystems erfolgreich Bauernfängerei betrieben hat.
Ewig her und heute heute kein Partykracher mehr.

Statt dessen gibt es heutzutage den Befehl "SET /P", den du bei Eingabe von "SET /?" am CMD-Prompt beschrieben findest..

Schau es dir bitte erst kurz selbst an - wenn du damit nicht weiterkommst --> wir sind hier.

Grüße
Biber
[Edit] Bei Werder Bremen hatten wir auch mal einen Kugelblitz namens Ailton... [/Edit]
Bitte warten ..
Mitglied: bastla
15.06.2010 um 15:34 Uhr
Hallo deadmanwalkin und willkommen im Forum!

Eine Eingabe lässt sich in Batch so durchführen und kann einfach mit Enter abeschlossen werden.
set /p FOLD=Bitte den namen der Datenbank eingeben: 
Anführungszeichen kannst Du ja bei der Verwendung der Variablen %FOLD% setzen:
xcopy C:\LAB4\DB\ML*.* "%FOLD%\"
Um das Ganze schließlich in einer (Endlos-)Schleife laufen zu lassen, einfach ein "goto" verwenden:
01.
@echo off & setlocal 
02.
:Loop 
03.
set "FOLD=" 
04.
set /p FOLD=Bitte den namen der Datenbank eingeben:  
05.
if defined FOLD xcopy C:\LAB4\DB\ML*.* "%FOLD%\" 
06.
echo. 
07.
echo. 
08.
goto :Loop
Grüße
bastla

[Edit]
@Biber
wir sind hier.
Sorry - war schon da ...
[/Edit]
Bitte warten ..
Mitglied: deadmanwalkin
15.06.2010 um 16:12 Uhr
Hi ihr beiden,

das war genau das was ich gesucht habe. "Set /P" hab ich beim googlen auch schonmal entdeckt gehabt, aber irgendwie bin ich nicht so ganz dahinter gestiegen. Mag auch daran liegen, dass ich nicht meine ganze Arbeitszeit zum verstehen von so einer Funktion aufwenden kann :P

Wie auch immer, es funktioniert einwandfrei. habs noch etwas für meine Bedürfnisse angepasst:

01.
@echo off & setlocal 
02.
:loop 
03.
Dir /b /ad 
04.
echo. 
05.
echo. 
06.
set "FOLD=" 
07.
set /p FOLD=Bitte den namen der Datenbank eingeben:  
08.
if defined FOLD xcopy C:\LAB4\DB\ML*.* "%FOLD%\" 
09.
cls 
10.
goto loop
Vielen Dank nochmal
Grüße,
dmw
Bitte warten ..
Ähnliche Inhalte
Webbrowser
gelöst Datei in Firefox Profilordner kopieren (9)

Frage von DarkScabs zum Thema Webbrowser ...

Batch & Shell
Dateien trotz Verwendung kopieren (2)

Frage von 112Timo zum Thema Batch & Shell ...

Vmware
gelöst Dateien auf eine VM im EXSi kopieren (3)

Frage von Stefan007 zum Thema Vmware ...

Batch & Shell
USB - Autorun kopieren von Dateien (6)

Frage von draycon zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows 7
Bluesreens unternehmensweit (18)

Frage von SYS64738 zum Thema Windows 7 ...

LAN, WAN, Wireless
IP Adressen - Modem - Switch - Accesspoint (17)

Frage von teuferl82 zum Thema LAN, WAN, Wireless ...

Festplatten, SSD, Raid
gelöst Raid-Controller (Areca) Datenverlust trotz R5 (16)

Frage von sebastian2608 zum Thema Festplatten, SSD, Raid ...

Windows Netzwerk
DNS ins mehreren Subnetzen (13)

Frage von joerg zum Thema Windows Netzwerk ...