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, 2327 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(3)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Dateien kopieren die nicht mehr verändert werden? (10)

Frage von pbelcl zum Thema Batch & Shell ...

Windows Server
gelöst Administrator kann auf Server keine EXE-Dateien kopieren, löschen, anlegen (5)

Frage von Winfried-HH zum Thema Windows Server ...

Batch & Shell
Nur aktuelle Dateien kopieren (3)

Frage von icke.hausen zum Thema Batch & Shell ...

Batch & Shell
gelöst Script: Dateien kopieren, Benamung anhang von Attributen (4)

Frage von Flexxa zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...