Top-Themen

Aktuelle Themen (A bis Z)

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

Wie kann ich Unterordner auslesen lassen und als echo ausgeben?

Frage Entwicklung Batch & Shell

Mitglied: Jeeroy

Jeeroy (Level 1) - Jetzt verbinden

29.03.2011, aktualisiert 18.10.2012, 9620 Aufrufe, 11 Kommentare

Hallo Leute, wieder bin ich auf eure Hilfe angewiesen.
Vorwort: Ich möchte in meiner Batch Datei das so Programmieren, das alle Unterordner vom Namen ausgelesen werden und als echo in meiner Batch Datei wiedergegeben werden können.

Also ich baue eine Backup Datei, in der am Anfang eine Abfrage kommt, welche Benutzer alles gesichert werden sollen, dafür sollen alle Benutzer, die sich am PC angemeldet haben ausgegeben werden.

Das habe ich mir so gedacht, dass alle Unterordner von "%userprofile%\.." als echo ausgegeben werden und man dann einen namen davon eintragen kann.
Doch weiss ich nicht, wie ich das hinbekomme, dass meine Batch die Unterordner auflisten kann.

Was dann als Zusatz noch sehr schön wäre ist, wenn dann nur die Benutzer ausgegeben werden, die seid 60 Tagen nicht mehr angemeldet wurden.

Wenn ihr mir damit weiterhelfen könnt, bin ich euch sehr dankbar.

Liebe Grüße Jeeroy
Mitglied: Skyemugen
29.03.2011 um 11:08 Uhr
Aloha,

du möchtest also nicht alle Unterordner von %userprofile% ausgegeben bekommen, sondern alle Unterordner eine Ebene höher (alle Profilordner) oder sehe ich das falsch? Die Unterordner von %userprofile% wären ja z.B. Desktop, Eigene Dateien etc.

Also bei Win XP z.B.
dir /ad /b "C:\Dokumente und Einstellungen"
oder sehe ich das falsch? (glaube bei Vista & Win 7 wäre das sogar direkt %profilesfolder%)
Hm, du möchtest also dort nur die Ordner angezeigt bekommen, von den Benutzern, die seit 60 Tagen nicht mehr angemeldet wurden, hm ergo das Änderungsdatum des Ordners auslesen (sollte ja immer aktualisiert werden, sonst müsste man das Änderungsdatum der ntuser.dat.LOG eine Ebene drunter jeweils auslesen.)

Sehe ich das richtig?

greetz André
Bitte warten ..
Mitglied: Jeeroy
29.03.2011 um 11:16 Uhr
Hey André,

Ah nicht ganz, habe mich aber zum teil auch falsch ausgedrückt sehe ich gerade.
Also Was du meinst ist schon richtig, die Profilordner, deswegen hatte ich hinter %userprofile% noch das \.. gemacht, also einen Ordner zurück.
Bei manchen PC's ist der Ordner auf D:\ und bei manchen auf C:\

Also, ich möchte die Profilordner aufgelistet bekommen.

Und dann das andere, da hatte ich das Falsch geschrieben:
Ich möchte nur die angezeigt bekommen, die in den letzten 60 Tagen in benutzung waren, also alle die länger als 60 Tage sich nicht angemeldet haben, sollen nicht mit ausgegeben werden.

Grüße
Bitte warten ..
Mitglied: bastla
29.03.2011, aktualisiert 18.10.2012
Hallo Jeeroy!

Das Auflisten der Unterordner lässt sich per
for /f %%i in ('dir "%userprofile%\.." /b /ad') do echo "%%i"
bewerkstelligen.

Das Datum der letzten Anmeldung kannst Du etwa so herausfinden:
01.
for /f "tokens=3-5 delims=/ " %%i in ('net user Benutzername^|findstr "Anmeldung"') do set "Jahr=%%k" & set "Tag=%%j" & set "Monat=0%%i" 
02.
set "Zuletzt=%Jahr%%Monat:~-2%%Tag%"
Und dann noch für den Vergleichswert (60 Tage vor heute): http://www.administrator.de/forum/batch-soll-verzeichnisse-und-dateien- ...

Grüße
bastla

[Edit] Manchmal brauch' ich lang, dann wieder länger - aber irgendwann stehen dann alle Prozentzeichen dort, wo sie gebraucht werden ... [/Edit]

[Edit2] @Skyemugen
@bastla, ich wunderte mich schon über %k & Co. KG ^_^
Das kommt davon, wenn ich mal (natürlich direkt in der CMD-Shell) teste ...
[/Edit2]
Bitte warten ..
Mitglied: Skyemugen
29.03.2011 um 11:24 Uhr
Aloha,

editiert und so, irgendwie heute nur mit dem halben Kopf aktiv

Ach, schon gewundert ... also dann Änderungsdatum innerhalb 60 Tage.

Hm, also: Es lässt sich alles machen.

greetz André

edit: ... nevermind, der bastla flog ja schon vorbei - net user Benutzername(!) natürlich ... da steht ja auch der Käse
edit²: Augen auf, ... %userprofile%\.. stand ja schon so da *pfeif* wieder mal nur halb hingeguckt

edit @bastla, ich wunderte mich schon über %k & Co. KG ^_^
Bitte warten ..
Mitglied: Jeeroy
29.03.2011 um 11:59 Uhr
Hey,

also das mit dem Auflisten der Unterordner funktioniert schonmal, super danke!

Das mit dem Datum der letzten Anmeldung ausgeben verstehe ich nicht ganz, und wird auch nicht ausgegeben, er soll halt dann nur auflisten, welche, die sich innerhalb der letzten 60 tage angemeldet haben, und die später auch nur kopieren und nicht die anderen,..
Bitte warten ..
Mitglied: Skyemugen
29.03.2011 um 12:16 Uhr
Aloha,

momentan hätte ich es wortwörtlich so umgesetzt (wahrscheinlich geht es mal wieder Welten einfacher):

01.
@echo off & setlocal enabledelayedexpansion 
02.
 
03.
set "G=%temp%\daysago.vbs" 
04.
set /a Tage=60 
05.
>%G% echo wscript.echo DateAdd("d",-%Tage%,Date) 
06.
for /f "tokens=1-3 delims=." %%b in ('cscript //nologo %G%') do set /a "sollDatum=%%d%%c%%b" 
07.
 
08.
for /f %%p in ('dir "%userprofile%\.." /b /ad') do echo "%%p" 
09.
set /p "Benutzer="Bitte gebe deinen Benutzer ein: "" 
10.
for /f "tokens=3-5 delims=/ " %%i in ('net user %Benutzer%^|findstr "Anmeldung"') do set "Jahr=%%k" & set "Tag=%%j" & set "Monat=0%%i" 
11.
set /a "Zuletzt=%Jahr%%Monat:~-2%%Tag%" 
12.
if %Zuletzt% GTR %sollDatum% (goto :machwas) else (echo war zu lange inaktiv && goto :eof) 
13.
del %G% 
14.
 
15.
:machwas 
16.
echo copy irgendwas irgendwohin 
17.
pause
Müsste man also nur noch eventuell wenn gewollt die Ausgabe des dir als Eingabe für den Benutzer (eben in loop-Abarbeitung oder so) umsetzen - aber bei mir ist gerade Magen leer => brain.exe auf standby => gleich Mittagspause ;)

edit: ach damn wieder halb gekleistert, halb was anderes gemacht und bastlas edit mit dem link übersehen der Stand da vorhin noch nicht ... wieder mal kein Lerneffekt und do-it-yourself ja, manchmal hab ich das Kommentar-verfassen-Fenster auch mal über eine Stunde offen xD
edit@bastla Ich war mir diesbezüglich nicht sicher, darum habe ich set /a sicherheitshalber gesetzt

greetz André
Bitte warten ..
Mitglied: bastla
29.03.2011 um 12:17 Uhr
Hallo Jeeroy!

Ist etwas knifflig, weil die Monatszahl ohne führende Null geliefert wird - daher sähe die Kombination etwa so aus:
01.
@echo on & setlocal enabledelayedexpansion 
02.
set "VglDatum=20110129" 
03.
for /f %%i in ('dir "%userprofile%\.." /b /ad') do ( 
04.
    for /f "tokens=3-5 delims=/ " %%a in ('net user "%%i"^|findstr "Anmeldung"') do set "Jahr=%%c" & set "Tag=%%b" & set "Monat=0%%a"  
05.
    set "Zuletzt=!Jahr!!Monat:~-2!!Tag!" 
06.
    if !Zuletzt! geq %VglDatum% echo %%i 
07.
)
Wenn Du jetzt noch das Vergleichsdatum %VglDatum% dynamisch haben willst, schaffst Du das mit dem Link von oben hoffentlich selbst [Edit] es sei denn Skyemugen konterkariert meine edukativen Bestrebungen [/Edit] ...

Grüße
bastla

[Edit] @Skyemugen: Ein "set /a" ist hier eigentlich nicht erforderlich, da die Datumswerte auch als String verglichen werden können ... [/Edit]
Bitte warten ..
Mitglied: Jeeroy
29.03.2011 um 12:24 Uhr
Hey danke für eure Antworten kann es gleich erst testen.

@bastla, kann ich nicht anstadt ein VglDatum auch eine Dauer von 60 Tagen eintragen, sonst müsste ich das Datum ja immer anpassen,...

Grüße Jeeroy
Bitte warten ..
Mitglied: Biber
29.03.2011 um 20:26 Uhr
Moin Jeeroy,

Zitat von Jeeroy:
Hey danke für eure Antworten kann es gleich erst testen.
Okay, das war vor 8 Stunden...
Zum Vergleich: Es gibt Frauen, die bekommen in diesem Zeitraum Fünflinge und schaffen dennoch einen kleinen Friseurbesuch.
Hast du dir irgendeinen widerspenstigen %userprofile%-Pfad ins Auge gerammt oder WTF dauert am Testen so lang?

@bastla, kann ich nicht anstadt ein VglDatum auch eine Dauer von 60 Tagen eintragen, ...
Ich springe mal für bastla ein, denn der sitzt sicherlich schon seit den erwähnten 8 Stunden bitterlich weinend zu Haus
und kein noch so voller Kühlschrank kann ihn trösten...

Denn er hat dir schon lange vor deiner sich abzeichnenden Nachfrage geschrieben
Zitat von bastla:
Hallo Jeeroy!

Wenn Du jetzt noch das Vergleichsdatum %VglDatum% dynamisch haben willst, schaffst Du das mit dem Link von oben hoffentlich selbst..

Also kurz gefragt.
Bekommst du den Kram jetzt zum Fliegen und machst du dann selbsttätig und zeitnah ein frühlingsgrünes Victoryzeichen an diesen Beitrag ?
- oder -
Möchtest du ein Geschenkpaketchen geschnürt bekommen?

Grüße
Biber
Bitte warten ..
Mitglied: bastla
29.03.2011 um 21:29 Uhr
... bzw noch eine ergänzende Frage: Könntest Du Dich dazu aufraffen, alle Antworten und Batchvorschläge, die Dir offeriert werden, zu lesen?

Grüße
bastla
Bitte warten ..
Mitglied: Jeeroy
30.03.2011 um 08:10 Uhr
Hey, ich glaube es tut nicht not einfach jemanden so anzufahren, wenn auf der Arbeit etwas wichtiges ansteht, muss ich das Testen halt nach hinten verschieben.

Und ich kann mir nicht Vorstellen, dass bastla oder jemand anders nur in diesem Beitrag ist und auf den Test wartet, ich glaube man kann sich nebenbei auch andersweitig Beschäftigen.

Danke für eure Hilfe!

Grüße Jeeroy
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch: eine Zahl eingeben und als echo ausgeben
gelöst Frage von Vit1985Batch & Shell2 Kommentare

Hallo, ich möchte mithilfe von einem Batch im DOS Fenster eine Zahl (z.B. 350) eintippen können und diese Zahl ...

Batch & Shell
Die letzten 5 Zeilen aus einem Logfile auslesen und in umgekehrter chronologischer Reihenfolge mit Echo ausgeben
gelöst Frage von ZendaraBatch & Shell3 Kommentare

Hallo, Ich versuche einen Batch zu schreiben der eine IP anpingt und protokolliert sobald der Ping unterbrochen wird. Unteranderem ...

PHP
Bei Versandkostenwert X oder Grösser als echo ausgeben Magento
Frage von sbsnewbiePHP2 Kommentare

Moin Leude, mal eine Frage: In meinem Magentoshop habe ich ein kleines Problem mit den Versandkosten. Es gibt 4 ...

Batch & Shell
CMD Echo in Fett, Kursiv oder unterstrichen ausgeben
gelöst Frage von Luuke257Batch & Shell8 Kommentare

Hallo Zusammen! Ist es möglich ein echo einer batch datei Fett gedruckt auszugeben? Die Console an sich kann ja ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Necur-Botnet soll Erpressungstrojaner Scarab massenhaft verbreiten

Information von BassFishFox vor 2 StundenErkennung und -Abwehr

12,5 Millionen Spam-Mails aus einem Bot-Netz mit 6 Millionen Computern? Eigentlich eine schwache Leistung. Die Erpresser setzen dabei auf ...

Microsoft

Nadeldrucker-Problem unter Windows - Microsoft liefert Updates

Information von BassFishFox vor 3 StundenMicrosoft

Hat ja nicht lange gedauert. Nachdem die November-Updates für Windows 7, 8.1 und 10 zahlreiche Nadeldrucker lahmgelegt hatten, stellt ...

Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 10 StundenLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Heiß diskutierte Inhalte
Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Windows Server
Kann man im KMS nachschauen , wieviele Clients den Key in Anspruch genommen haben
gelöst Frage von rainergugusWindows Server12 Kommentare

Hallo, wir haben einen KMS Windows 10 Key. Dieser ist ja W7 kompatibel. Aber unser Windows 7 Pool registriert ...