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

Batch Ordnerstruktur nach einer Datei durchsuchen Diese dann mit type in der Batch anzeigen

Frage Entwicklung Batch & Shell

Mitglied: CrasherX

CrasherX (Level 1) - Jetzt verbinden

08.03.2013 um 01:48 Uhr, 1571 Aufrufe, 10 Kommentare

Hallo zusammen
Ich quäle mich nun schon einige Stunden an der Lösung eines Problemchen.
Da ich relativer Anfänger bin, was Batch anbelangt... Frage ich mal die Profis.

Es geht um folgendes Skritp:

01.
@echo off 
02.
:noteSys1 
03.
set saven=save.note 
04.
set loadn=load.note 
05.
set delen=dele.note 
06.
title :::Neue Notitz:: 
07.
echo ################################### 
08.
echo #  [save.note] - Speichern        # 
09.
echo #  [dele.note] - Eingabe L”schen  # 
10.
echo #  [load.note] - Notitz Laden     # 
11.
echo ################################### 
12.
echo Neue Notitz: 
13.
echo ------------ 
14.
del /f "%userprofile%\documents\newnote.tmp" >nul 
15.
for /f "tokens=2 delims=:." %%i in ('chcp') do set "CP=%%i" 
16.
chcp 1252>nul 
17.
set /p newnote1= 
18.
if "%newnote1%"=="%saven%" ( 
19.
	goto :savenote 
20.
21.
if "%newnote1%"=="%delen%" ( 
22.
	goto :delenote 
23.
24.
if "%newnote1%"=="%loadn%" ( 
25.
	goto :loadnet 
26.
27.
echo %newnote1%>>"%userprofile%/documents/newnote.tmp" 
28.
set /p newnote2= 
29.
if "%newnote2%"=="%saven%" ( 
30.
	goto :savenote 
31.
32.
if "%newnote2%"=="%delen%" ( 
33.
	goto :delenote 
34.
35.
if "%newnote2%"=="%loadn%" ( 
36.
	goto :loadnote 
37.
38.
echo %newnote2%>>"%userprofile%/documents/newnote.tmp" 
39.
set /p newnote3= 
40.
if %newnote3%==%saven% ( 
41.
	goto :savenote 
42.
43.
if %newnote3%==%delen% ( 
44.
	goto :delenote 
45.
46.
if %newnote3%==%loadn% ( 
47.
	goto :loadnote 
48.
49.
echo %newnote3%>>"%userprofile%/documents/newnote.tmp" 
50.
chcp %CP%>nul 
51.
:delenote 
52.
cls 
53.
goto :noteSys1 
54.
:savenote 
55.
cls 
56.
title Speichern... 
57.
echo Speichern der Notitz 
58.
echo Bitte gib einen gew”nschten Namen an... 
59.
echo. 
60.
set /p savename="\> 
61.
if exist "%userprofile%\documents\Notitzen\Am [%date%] erstellt" ( 
62.
	copy "%userprofile%\documents\newnote.tmp" "%userprofile%\documents\Notitzen\Am [%date%] erstellt\%savename%" 
63.
	) else ( 
64.
mkdir "%userprofile%\documents\Notitzen\Am [%date%] erstellt" 
65.
copy "%userprofile%\documents\newnote.tmp" "%userprofile%\documents\Notitzen\Am [%date%] erstellt\%savename%" 
66.
67.
rem ä = ALT+0132 
68.
rem ü = ALT+0129 
69.
rem ö = ALT+0148 
70.
:loadnote 
71.
cls 
72.
title Notitzen laden... 
73.
echo #################################   Um eine Datei auszuw„hlen 
74.
echo # Hier kannst du deine Notitzen #   musst du nur den Dateinamen 
75.
echo # einsehen.                     #   eingeben und mit [Enter] 
76.
echo #################################   best„tigen. 
77.
echo. 
78.
tree "%userprofile%\documents\Notitzen" /f /a 
79.
set /p show="\> 
80.
cls 
81.
title :::%show%::: 
82.
:: Hier merkt man bereits schmerzhaft, dass ich die Anwendung von For Schleifen noch nicht so behersche, wie ich es gerne hätte.. und genau hier benötige ich Hilfe. 
83.
FOR /R "%userprofile%\Notitzen\" %%i DO type %show% 
84.
type "%show%" 
85.
pause
Der User speichert Strings zunächst in eine temporäre Datei. Falls er diese dann speichern möchte verschiebt sich der Inhalt von der temporären Datei in eine statische mit dem gewünschten Namen des Users. Diese Datei wird dann noch in einen Ordner mit dem Erstellungs Datum verschoben. Falls der User an dem Tag bereits mehrere erstellt hat, wandern alle gleich datierten in den selben Ordner.

Nun das eigentliche Problem:

Bei :loadnote Möchte ich nun erreichen, dass die Batch die Ordnerstruktur von "%userprofile%\Notitzen\" komplett nach der in Variable %show% deklarierten Datei durchsucht. Und jene dann, mit dem Befehl "type", in der Batch wiederspiegelt.

Ich hoffe doch ich habe mich sachlich und klar ausgedrückt, für jeden konstruktiven Beitrag gilt mein Dank.

Mit freundlichen Grüssen
CrasherX
Mitglied: 16568
08.03.2013 um 07:16 Uhr
Da is ein Schreibfehler drin...?


Lonesome Walker
Bitte warten ..
Mitglied: bastla
08.03.2013, aktualisiert um 17:36 Uhr
Hallo CrasherX und willkommen im Forum!

Abgesehen von Deiner etwas eigenwilligen Schreibweise des Wortes "Notiz" - was soll denn geschehen, wenn die Datei nicht gefunden wird?

Wenn Du
for /f "delims=" %%i in ('dir /s/b/a-d "%userprofile%\Notitzen\%show%" 2^>nul') do type "%%i"
verwendest (die Zeile 84 ist natürlich unnötig), wird für nicht gefundene Dateien einfach nix passieren ...

Grüße
bastla
Bitte warten ..
Mitglied: 16568
08.03.2013 um 17:48 Uhr
@bastla:

Das meinte ich noch nicht mal, guckst Du mal GENAU...

01.
23.	)  
02.
24.if "%newnote1%"=="%loadn%" (  
03.
25.	goto :loadnet  
04.
26.	)
Was könnte DA wohl falsch sein...


Lonesome Walker
Bitte warten ..
Mitglied: bastla
08.03.2013 um 17:53 Uhr
Hallo LSW!

Yep - das macht's nicht besser ...

Grüße
bastla
Bitte warten ..
Mitglied: CrasherX
08.03.2013 um 19:06 Uhr
Danke schonmal für eure Hilfe. Es funktioniert soweit so gut. Jetzt möchte ich bloss noch, dass die Schleife auch die Unterordner mit einbezieht um darin die Datei zu suchen.

@Lonesome Walker:

01.
set saven=save.note  
02.
set loadn=load.note  
03.
set delen=dele.note 
String: save.note wird in Variable %saven% gespeichert.
Ich weiss, dass dies Befehle unnötig sind, da ich einfach den String(save.note) in " und " setzen könnte. Aber das ist jedermanns Sache.

01.
@echo off 
02.
set /p string="> 
03.
if "%string%"=="save.note" ( 
04.
goto :saven 
05.
)
Die if abfragen sind extra in Klammern, denn nur nachfolgend auflisten lässt das Skript abschmieren, da kein else deklariert wird. Die zwei Klammern sind weniger Code, als unter jeder if-Abfrage noch zusätzlich ein if not Folgebefehl oder eine noch grössere Klammerstruktur mit ettlichen else statements... Denn es soll ja lediglich nach der if Schleife die zwei anderen if Schleifen ablaufen.
01.
if "%string%"=="save.note" goto :saven 
02.
if not %"string"=="save.note" goto :next
Danke euch
Bitte warten ..
Mitglied: bastla
08.03.2013 um 19:20 Uhr
Hallo CrasherX!
Jetzt möchte ich bloss noch, dass die Schleife auch die Unterordner mit einbezieht um darin die Datei zu suchen.
Da ja "dir /s" verwendet wird, macht sie das schon ...
Die if abfragen sind extra in Klammern, denn nur nachfolgend auflisten lässt das Skript abschmieren, da kein else deklariert wird.
Kann ich mir nicht vorstellen; außerdem: Wozu gibt es eigentlich den gleichen Ablauf dreimal (mit %newnote1%, %newnote2% und %newnote3%)?

Zeile 53 sollte jedenfalls vor Zeile 51 (und als Kopie auch vor Zeile 70) stehen, und der Code für das Löschen sieht auch noch etwas unausgereift aus .
LSW hatte mit seinem Hinweis übrigens konkret die Zeile 25, und nicht Deine Variablen gemeint.

Grüße
bastla
Bitte warten ..
Mitglied: CrasherX
08.03.2013 um 19:29 Uhr
Leider funktioniert dies bei mir nicht. Ich kann nur Dateien aus dem Rootverzeichniss auslesen.

Bei den verschiedenen %newnote%'s handelt es sich um drei Eingaben. In je eine Zeile... 1. Zeile = %newnote1% 2. Zeile = %newnote2% etc.

Oh O.o den Schreibfehler habe ich völlig übersehen. Danke an LSW
Bitte warten ..
Mitglied: bastla
08.03.2013 um 20:03 Uhr
Hallo CrasherX!
Ich kann nur Dateien aus dem Rootverzeichniss auslesen.
Du kannst den "dir"-Befehl ja einfach testen, indem Du in einer CMD-Shell
dir /s/b/a-d "%userprofile%\Notitzen\Dateiname"
eingibst ...
Warum willst Du genau 3 Zeilen eingeben lassen? Es wäre mE doch sinnvoller, den Programmteil nur einmal zu verwenden und dem Anwender die Entscheidung zu überlassen ...

Grüße
bastla
Bitte warten ..
Mitglied: CrasherX
08.03.2013 um 20:10 Uhr
Wie meinst du den das jetzt? In deinem Dir befehl wird nur nach einer bestimmten Datei in einem Bestimmten Verzeichnis gesucht.

Dam User bleibt je die Wahl... Er kann durch 2 Befehle (save.note, del.note) Die eingegebenen Daten bereits ab der ersten Zeile Speichern, oder auch nach der 2. Zeile, das eingegebene resseten und die Notitz erneut verfassen.
Bitte warten ..
Mitglied: bastla
08.03.2013 um 20:51 Uhr
Hallo CrasherX!
In deinem Dir befehl wird nur nach einer bestimmten Datei in einem Bestimmten Verzeichnis gesucht.
Ist das eine Vermutung oder das Ergebnis Deines Tests?

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Batch & Shell
gelöst Ordner per Batch verschieben, Datei kopieren (2)

Frage von Shape.Shifter zum Thema Batch & Shell ...

Batch & Shell
gelöst BATCH ini Datei Datei auslesen (2)

Frage von Juergen42 zum Thema Batch & Shell ...

Batch & Shell
Batch: Word Datei kopieren und umbennen (9)

Frage von ExcelNoob177 zum Thema Batch & Shell ...

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 ...