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

Daten kopieren mit Auswahl

Frage Entwicklung Batch & Shell

Mitglied: Matsch79

Matsch79 (Level 1) - Jetzt verbinden

13.05.2009, aktualisiert 18.10.2012, 4074 Aufrufe, 17 Kommentare

Hallo zusammen,
vielleicht kann mir von eich einer helfen.

Ich möchte gerne eine Datenwiederherstellung mittels einer Batch-Datei realisieren. Ich möchte gerne das das Backup Verzeichnis ausgelesen wir, und ich dann auswählen kann welche Datei ich in ein anderes Verzeichnis kopieren möchte.
Leider haben die Backupdateien nicht einen immer festen Namen, sondern werden bei jedem Autobackup die Datei in folgendem Format dargestellt "Dateiname_2009_05_13.txt". Also Dateiname mit angeängtem Datum.
Habe leider keinerlei Ahnung wie ich sowas realisieren kann. Hat evtl. jemand eine solche Datei? Oder kann mir mit Tipps und Rat weiterhelfen.

Vielen Dank schonmal.

Markus
Mitglied: 60730
13.05.2009 um 19:24 Uhr
Servus und willkommen,

kannst du mal ein Beispiel der "Dateiname_2009_05_13.txt" senden?

bzw: was genau soll denn passieren?

01.
:parameter 
02.
set /p "Jahr=Welches Jahr : " 
03.
set /p "Monat=Welcher Monat : " 
04.
set /p "Tag=Welcher Tag : " 
05.
 
06.
If exist "Dateiname_%Jahr%_%Monat%_%Tag%.txt" goto start 
07.
echo Datei "Dateiname_%Jahr%_%Monat%_%Tag%" nicht gefunden && goto parameter 
08.
:start 
09.
Echo Backup von "Dateiname_%Jahr%_%Monat%_%Tag%" 
10.
Type "Dateiname_%Jahr%_%Monat%_%Tag%.txt" 
11.
pause
Wäre ganz sicher mal ein Anfang....
edit - eine Sicherheitsabfrage kann nie schaden /edit
Gruß
Bitte warten ..
Mitglied: Matsch79
13.05.2009 um 19:46 Uhr
Der Dateiname steht nur als Beispiel für die hinterlegten Daten. Die haben eigendlich keinen Einfluß auf den Kopiervorgang.
In dem Ordner "Backups" werden einmal pro Tag eine Datensicherung in Form einer Datei abgelegt.

Ich möchte dann im Fall einer Datenwiederherstellung eine Datei aus dem Ordner "Backups" auswählen und dann in das Originalverzeichnis kopieren,
wo es dann die defekte oder missglückte Datei überschreibt. Vorher soll die defekte Datei aber noch in das Verzeichnis "Bad" kopiert werden, als Möglichkeit der Schadensfeststellung, bzw. Grund für den Fehler.

Ich hoffe es war halbwegs verständlich
Bitte warten ..
Mitglied: LotPings
13.05.2009 um 20:32 Uhr
Hallo Matsch79,

ich habe einen einfachen Auswahl-Mechanismus in Batch der auf nummerierten Dateien beruht.

01.
:: Select.cmd ::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
02.
@echo off&setlocal 
03.
Set Select=dir /B/S/A-D "D:\Test\*.cmd" 
04.
%Select% |find /V /N ""|more 
05.
:: 
06.
set "Num="&Set "Auswahl=" 
07.
set /P Num=Nummer zum Abspielen : 
08.
if not defined Num goto :eof 
09.
for /f "tokens=1,* delims=[]" %%A in ( 
10.
  '%Select% ^|find /V /N ""^|find "[%Num%]"' 
11.
    ) do set "Auswahl=%%B" 
12.
if not Defined Auswahl Echo Fehler keine Auswahl&Pause&Goto :Eof 
13.
Echo Es wurde Nummer %Num% ausgewählt: %Auswahl% 
14.
Pause
Die Variable Select ist mit den Suchkriterien zu versehen
die sowohl für die nummerierte Ausgabe als auch für das anschließende Herausfiltern benutzt wird.

Wenn die Liste mehr als einen Bildschirm lang ist,
muss man sich die [Nummer] merken und Abbrechen mit Q oder weiterblättern mit Leertaste.

Eigentlich ein primitiver Mechanismus aber für viele Fälle ausreichend.

Gruß
LotPings
Bitte warten ..
Mitglied: bastla
13.05.2009, aktualisiert 18.10.2012
@LotPings
Etwas in der Art hatten wir auch mal hier versucht ...

Grüße
bastla
Bitte warten ..
Mitglied: LotPings
13.05.2009, aktualisiert 18.10.2012
Zitat von bastla:
@LotPings
Etwas in der Art hatten wir auch mal
hier versucht

Das ist ja im Vergleich eine komfortable Menustruktur,
mein obiger "quick and dirty"-Ansatz diente mir dazu, aus einem ganzen Verzeichnisbaum Video/MP3/was auch immer Dateien auch nach Namensbestandteilen à la (*Hot Chil*) zu finden und den Fundort nicht wieder zu Fuß abtippen zu müssen. Da mein CMD-Fenster meist 132*60 Zeichen groß ist, muss ich auch nicht viel blättern

Gruß
LotPings
Bitte warten ..
Mitglied: Matsch79
13.05.2009 um 23:56 Uhr
Hi bastla,

Das sieht ja schon mal genau aus wie das was ich suche. Zumindest vom Menü. Nur leider blicke ich durch den gesammten Code noch nicht durch. Die Batch von dir erwartet ja *.exe Dateien die ausgeführt werden sollen. In welcher Zeile finde ich den die Möglichkeit statt dem Ausführen einer *.exe die gefundene Datei zu kopieren.

Die gefundene Datei soll im darüber liegenden Ordner gespeichert, Attriebut -R gesetzt und umbenannt werden.

Gibt es eigendlich im Netz ein gutes Nachschlage werk, wo man sich so spezielle Dinge noch anlesen kann, wie die Befehle aufgebaut sein müssen usw. Am idealsten wäre ja ein Editor der die Änderungen direkt auf Syntax Fehler und so weiter kontrolliert, und evtl ner Vorschau, wie der Befehl den man gerade eingibt normalerweise weitergehen würde.

Vielen Dank schon mal für deine/eure Hilfe.

Markus
Bitte warten ..
Mitglied: bastla
14.05.2009 um 08:15 Uhr
Hallo Matsch79!

In Phlegmas letzter Fassung wird in Zeile 112 die gewählte Datei der Variablen %proggy% (der Name sagt mir nicht wirklich zu, aber ich bleibe in der Folge dabei) zugewiesen - ab da kannst Du sie demnach direkt ansprechen ...

Danach könnte es so weiter gehen:
01.
::Datum abschneiden und Zielpfad erstellen 
02.
set "Dateipfad=%Zielordner%\%proggy:~,-15%.%Typ%" 
03.
::umbenannte Kopie am Zielort erstellen 
04.
copy "%proggy%" "%Dateipfad%" 
05.
::Schreibschutz entfernen 
06.
attrib -r "%Dateipfad%"
wobei %Zielordner% und %Typ% natürlich vorweg festzulegen wären ...

Grüße
bastla
Bitte warten ..
Mitglied: Matsch79
14.05.2009 um 17:33 Uhr
Ich glaube, ich bin gerade zu blöd dafür.

Habe das jetzt mal mit dem Code ausprobiert.

Habe das wie folgt abgeändert:

112. set "proggy=!prog%ANr%!"
113. ::Datum abschneiden und Zielpfad erstellen
114 set "C:\Test\Demo\=%Backups%\%proggy:~,-15%.%txt%"
115 ::umbenannte Kopie am Zielort erstellen
116 copy "%proggy%" "%C:\Test\Demo\%"
117 ::Schreibschutz entfernen
118 attrib -r "%C:\Test\Demo\%"



Habe alles was danachkam erst mal gelöscht, bzw in einer anderen Datei archiviert.

Beim Ausführen komme ich bis zur Dateiauswahl, sobald ich die Nummer eingetippt habe, und Enter drücke kommt kurz eine Meldung. Leider geht das Fenster zu schnell zu, so das ich keine Chance habe die Fehlermeldung zu lesen.
Ist das oben so richtig zusammengesetzt? Bin ich wenigstens auf dem richtigen Weg. evtl muß ich den Copy befehl noch mit einem -y erweitern, das er die alte Datei dann auch überschreibt.
Bitte warten ..
Mitglied: LotPings
14.05.2009 um 19:04 Uhr
Zitat von Matsch79:
Leider geht das Fenster zu schnell zu, so das ich keine Chance habe die Fehlermeldung zu lesen.

Dann starte den Batch entweder aus einem offenen CMD Fenster oder füge einen Pause Befehl ein.

Gruß
LotPings
Bitte warten ..
Mitglied: bastla
14.05.2009 um 19:21 Uhr
Hallo Matsch79!
114 set "C:\Test\Demo\=%Backups%\%proggy:~,-15%.%txt%
Mit %Zielordner% und %Typ% war gemeint, dass Du diese Werte vorweg in Variablen festlegen solltest (am Besten gleich am Anfang, wo man/frau sie leicht finden kann), zB
set "Zielordner=C:\Test\Demo" 
set "Typ=txt"
- beim direkten Eintrag sind die %-Zeichen überflüssig. In den Zeilen 116 und 118 soll dann nur mehr die in Zeile 114 erstellte Variable %Zielpfad% verwendet werden.

Ebenfalls am Anfang kannst Du zur Vereinfachung mit
pushd "Backuppfad"
oder, wenn Du den Pfad schon der Variablen %Backups% zugewiesen hast, eben mit
pushd "%Backups%"
gleich in den richtigen Ordner wechseln (und am Ende, der Ordnung halber, per "popd" wieder zurückkehren) - daher:

Füge die beiden "set"-Zeilen und das "pushd" ein und verwende den von mir geposteten Teil unverändert.
evtl muß ich den Copy befehl noch mit einem -y erweitern, das er die alte Datei dann auch überschreibt.
Mit "-y" würdest Du das Überschreiben verhindern; in einem Batch überschreiben "copy" und "move" per Default.

Grüße
bastla
Bitte warten ..
Mitglied: Matsch79
14.05.2009 um 22:05 Uhr
Vielen Dank, jetzt funktioniert es. wenn man nicht peniebel drauf achtet das nicht irgendwo ein Leerzeichen, oder ein ungedrehter Schrögstrich oder sonst ein Tippfehler drin gelandet ist, dann ist man hoffnungslos verloren.
Bei manchen HTML Editoren zeigt der farblich an, wenn ein syntax Fehler drin ist. Bibts da für Batch Dateien auch so einen Editor. Ich denke mal das das gerade für Anfänger einfacher wäre.

Jetzt noch mal so als hoffendlich letzte "nervende" Frage.

Wie kann ich die Pfadangaben so gestalten, das die Batchdatei erst ausliest, in welchem Verzeichnis die liegt. Ich frage deswegen, weil ich wohl die Anwendung auf einem USB Stick oder einer mobielen Festplatte laufen lassen möchte, und je nachdem wenn dann z.B. ein anderer Laufwerksbuchstaben zugewiesen wird, stimmen ja die eingetragenen Pfade nicht mehr.

Vielen herzlich Dank schonmal von mir.

Markus
Bitte warten ..
Mitglied: bastla
14.05.2009 um 22:10 Uhr
Hallo Matsch79!

Das Verzeichnis der Batchdatei lässt sich so ermitteln:
set "Pfad=%~dp0"
Näheres dazu in der Hilfe zu "for" (gegen Ende, unter "Ersetzung von Verweisen") ...

Grüße
bastla
Bitte warten ..
Mitglied: LotPings
14.05.2009 um 22:16 Uhr
Zitat von Matsch79:

Bei manchen HTML Editoren zeigt der farblich an, wenn ein syntax Fehler drin ist. Bibts da für Batch Dateien auch so einen Editor. Ich denke mal das das gerade für Anfänger einfacher wäre.

Schau dir mal Notepad++ an, hat Syntax Highlighting und kann sehr schön zusammengehörige Klammern, Anführungszeichen etc markieren.

Jetzt noch mal so als hoffendlich letzte "nervende" Frage.
Wie kann ich die Pfadangaben so gestalten, das die Batchdatei erst ausliest, in welchem Verzeichnis die liegt. Ich frage deswegen, weil ich wohl die Anwendung auf einem USB Stick oder einer mobielen Festplatte laufen lassen möchte, und je nachdem wenn dann z.B. ein anderer Laufwerksbuchstaben zugewiesen wird, stimmen ja die eingetragenen Pfade nicht mehr.

Die Batch kennt Ihren eigenen Standort mit "%~dp0"

Gruß
LotPings
Bitte warten ..
Mitglied: Matsch79
14.05.2009 um 22:49 Uhr
Vielen Dank euch allen. endlich komme ich weiter.

Kann ich mit einem geänderten Befehl auch in das darüberliegende Verzeichnis? In dem Dosfenster selber geht das ja mit "cd.."

Denn die Batch Datei liegt in C:\Test\Demo\Backups\ und ich muß eine Datei dann nach C:\Test\Demo\ verschieben.

habe das vor mit dem Move Befehl.

bis jetzt war es move C:\Test\Demo\Backup\Datei.txt C:\Test\Demo davor soll aber die Originaldatei gesichert werden Zu Analysezwecken oder ähnlichen

Sah bis jetzt so aus:

copy C:\Test\Demo\Datei.txt C:\Test\Demo\Bad\Datei_alt.txt
move C:\Test\Demo\Backup\Datei.txt C:\Test\Demo\Datei.txt
Bitte warten ..
Mitglied: bastla
14.05.2009 um 23:02 Uhr
Hallo Matsch79!

Analog zu "cd":
pushd "%~dp0.."
oder
set "Pfad=%~dp0.."
bzw konkret
copy "%~dp0..\Datei.txt" "%~dp0..\Bad\Datei_alt.txt" 
move "%~dp0Datei.txt" %~dp0.."
Grüße
bastla
Bitte warten ..
Mitglied: Matsch79
14.05.2009 um 23:56 Uhr
So, mit dem Move klapt das.

wollte dann vorher noch die datei zu Analysrzwecken in einen anderen Ordner kopieren

Habe dann geschrieben

set "Basisordner=%~dp0.."
set "Sicherungsordner=%~dp0..\Bad\"
copy Datei.txt "%Basisordner% "%Sicherungsordner%"
move "%~dp0Datei.txt" "%~dp0.."

Wie gesagt die Reihe mit move funktioniert, aber vorher wird der copy Vorgang mit der Meldung Sysntaxfehler Mup die etwas heißen:

copy "%~dp0..Datei.txt" "%Sicherungsordner%"

oder etwa:

copy "%~dp0..Datei.txt" "&~dp0..\Bad\" ????
Bitte warten ..
Mitglied: Matsch79
15.05.2009 um 00:38 Uhr
Vielen lieben Dank nochmalan alle dir mir geholfen haben und immer geduldig waren.
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Windows 10
gelöst Onedrive-Daten kopieren ohne neu zu synchronisieren? (5)

Frage von 1410640014 zum Thema Windows 10 ...

Datenbanken
gelöst DB2 Daten in Windows DB2 kopieren (1)

Frage von Emheonivek zum Thema Datenbanken ...

Microsoft Office
Excel 2010 - Microsoft Excel kann die Daten nicht kopieren (4)

Frage von EDV-Oellerking zum Thema Microsoft Office ...

Microsoft Office
Kopieren von auszuwählenden Daten in weitere Tabelle (1)

Frage von dus100 zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (14)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...