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

Ordner in Unterordner des Mainordners automatisch erstellen. Wie ?

Frage Entwicklung Batch & Shell

Mitglied: Saggi

Saggi (Level 1) - Jetzt verbinden

16.02.2007, aktualisiert 03.01.2008, 5291 Aufrufe, 8 Kommentare

Hallo ihr alle,

ich habe mal ne Frage.

Wie kann ich es machen, dass ich in alle meine Unterordner von "TEST" einen Ordner namens "XY" erstell?

Dann fänd ich es noch gut, wenn es eine Lösung gibt welches folgende Dinge "ausführt".

1) Suche in Unterordner von TEST ( allen Ordnern der nächsten Ebene nicht tiefer) nach einem Ordner "Jahr x" (muss variabel sein)
2)Wenn nicht vorhanden erstellen
3)Verschiebe alle welche im Jahr x erstellt wurden in den Ordner "Jahr x"


Kann mir dazu jemand vielleicht helfen?


MfG Sandro
Mitglied: Biber
16.02.2007 um 13:52 Uhr
Moin Saggi,

ich habe jetz mal als "Jahr x" das Jahr 2006 eingesetzt.


Demo zu 1+2) Am CMD-Prompt:
01.
for /D %i in (\TEST\*) do @<b>ECHO</b> if not exist "%~nxi\Jahr 2006" md "%~nxi\Jahr 2006" 
02.
for /D %i in (\TEST\*) do @for %j in ("\TEST\%~nxi\*.xls") do @echo %~tj|find ".2006">nul && @<b>ECHO</b> Move "%i\%j" "%i\Jahr 2006\*.*"
In den beiden Zeilen muss das fette ECHO nach dem Anpassen und Testen entfernt werden.
Im Batch dann ggf. zwei Prozentzeichen statt einem vor den dynamischen Variablen (%%i statt %i etc.).

HTH
Biber
Bitte warten ..
Mitglied: Saggi
16.02.2007 um 14:18 Uhr
Hallo,

danke für deine Antwort.

Habe allerding ein Problem damit.
Dein Code findet alle Ordner, es verschiebt aber keine Dateien sondern zeigt mir nur auf dem Bildschrim an, was er gerade macht, also welche Dateien er angeblich verschiebt.

Kannst du mir vielleicht nochmals helfen?

MfG
Sandro
Bitte warten ..
Mitglied: Biber
16.02.2007 um 15:14 Uhr
Moin Saggi

Siehe oben:
In den beiden Zeilen muss das fette ECHO nach dem Anpassen und Testen entfernt werden.

Die "produktive" Variante z.B. der ersten Zeile ware dann
- statt im TEST
for /D %i in (\TEST\*) do @ECHO if not exist "%~nxi\Jahr 2006" md "%~nxi\Jahr 2006"
- neu im Einsatz/in PROD:
for /D %i in (\TEST\*) do @if not exist "%~nxi\Jahr 2006" md "%~nxi\Jahr 2006"

Zweite Zeile entsprechend.

Gruß
Biber
Bitte warten ..
Mitglied: Saggi
19.02.2007 um 09:31 Uhr
Moin Saggi

Siehe oben:
> In den beiden Zeilen muss das fette
ECHO nach dem Anpassen und Testen entfernt
werden.

Die "produktive" Variante z.B. der
ersten Zeile ware dann
- statt im TEST
> for /D %i in (\TEST\*) do @ECHO if not
exist "%~nxi\Jahr 2006" md
"%~nxi\Jahr 2006"
- neu im Einsatz/in PROD:
> for /D %i in (\TEST\*) do @if not exist
"%~nxi\Jahr 2006" md
"%~nxi\Jahr 2006"

Zweite Zeile entsprechend.

Gruß
Biber

Hallo,

danke für deine erneute Hilfe, aber das ganze funktioniert leider noch nicht.
Wenn ich das Echo stehen lass, listet er mir alles so, wie es auch geschehen soll.
Entfern ich dann aber das Echo, dann passiert rein garnichts mehr.
Das "Dos-Fenster" öffnet sich kurz und schließt sich ohne Aktion sofort wieder.

Was kann denn da der Fehler sein?

MfG Sandro
Bitte warten ..
Mitglied: Saggi
02.01.2008 um 16:01 Uhr
Es gibt einen Hauptordner
In diesem gibt es Unterordner
In den Unterordnern wird jeweils ein Order "Jahr 200$x" erstellt
Alle Dateien und Ordner im Unterordner sollen in den Ordner "Jahr
200$x" verschoben werden AUSNAHME Ordner mit dem Namen Jahr 200$x - diese
sollen bleiben.

Es gibt keinen bestimmten Dateityp - es soll alles verschoben werden.

Der bisherige Ansatz war:

[code]for /D %i in (\TEST\*) do @for %j in ("\TEST\%~nxi\*.xls") do
@echo %~tj|find ".2006">nul && @ECHO
Move "%i\%j" [/code]



Wäre sehr nett wenn du mir nochmals helfen könntest.




MfG Sandro
Bitte warten ..
Mitglied: Biber
02.01.2008 um 17:01 Uhr
Moin Saggi,

Es gibt einen Hauptordner
In diesem gibt es Unterordner
In den Unterordnern wird jeweils ein Order "Jahr 200$x" erstellt
Also nennen wir die oberen Ebenen mal "x:\Hauptordner" und "UnterordnerA" [.und parallel UnterOrdnerB.."
Alle Dateien und Ordner im Unterordner sollen in den Ordner "Jahr 200$x" verschoben werden
AUSNAHME Ordner mit dem Namen Jahr 200$x - diese sollen bleiben.

Okay, wenn also ein Verzeichnis "HauptOrdner" existiert mit "UnterordnerA", "UnterOrdnerB"...
Dann laufe ich diese Struktur entlang mit [Test am CMD-Prompt]:
01.
for /D %i in ("x:\HauptOrdner\*") do @echo %i
Hier sollte Dir jetzt so etwas angezeigt werden:
01.
x:\HauptOrdner\Hund 
02.
x:\HauptOrdner\Katze 
03.
x:\HauptOrdner\Maus 
04.
x:\HauptOrdner\UnterordnerA 
05.
x:\HauptOrdner\UnterordnerB 
06.
...
Wenn das klappt, dann eine Ebene tiefer gehen (eine weitere FOR/D-Anweisung dahintersetzen:
01.
for /D %i in ("x:\HauptOrdner\*") do @for /D %j in ( "%i\*") do @echo %j
Jetzt sollte etwas in der Art zu sehen sein:
01.
x:\HauptOrdner\Hund\Futter 
02.
x:\HauptOrdner\Hund\Steuer 
03.
x:\HauptOrdner\Hund\Tierarzt 
04.
x:\HauptOrdner\Hund\Jahr 2006 
05.
x:\HauptOrdner\Katze\Streu 
06.
x:\HauptOrdner\Katze\Möbel 
07.
x:\HauptOrdner\Katze\Jahr2006 
08.
.... 
09.
.... 
10.
x:\HauptOrdner\Maus 
11.
... 
12.
x:\HauptOrdner\Maus\Jahr 2006 
13.
 
14.
x:\HauptOrdner\UnterordnerA 
15.
... 
16.
x:\HauptOrdner\UnterordnerB 
17.
...

Wenn num alle Verzeichnisse unterhalb der Ebenen Hund/Katze/Maus außer dem "Jahr 2006" selbst verschoben werden sollen, dann
(Fast der letzte) Test am CMD-Prompt:
01.
for /D %i in ("x:\HauptOrdner\*") do @for /D %j in ( "%i\*") do @echo "%~nxj"|find /v "Jahr 2006"
Jetzt sollten nur alle Ordner angezeigt werden, die NICHT "Jahr 2006" heißen.
Und diese verschieben wir -wenn das bisher geklappt hat!-
Jetzt als Batch-Version - alle Prozentzeichen werden verdoppelt:

01.
::----das wird ein Batch.cmd 
02.
@echo off 
03.
 
04.
for /D %%i in ("x:\HauptOrdner\*") do @for /D %%j in ( "%%i\*") do @( 
05.
        echo "%%~nxj"|find /v "Jahr 2006" >nul && move "%%j" "%%i\Jahr 2006" 
06.
       ) 
Das einzige, was dazugekommen ist:
&& move "%%j" "%%i\Jahr 2006"
...übersetzt soviel wie :
wenn Du mit den Befehl vorher, also Find /v ERFOLGREICH warst, kein Verzeichnis "Jahr 2006" gerade gefunden hast, dann verschieb dieses Verzeichnis.

Probier mal bitte mit Deinen Werten für "x:\HauptOrdner" und "UnterOrdner" aus, inwieweit ich es so anforderungsgerecht hingebogen habe.

Grüße
Biber
Bitte warten ..
Mitglied: Saggi
03.01.2008 um 11:09 Uhr
Hallo,


danke für deine Mühe.

Das ganze funktioniert soweit. Ich habe nur noch das Problem, dass ich 6 mal den Ausruf "Prozess onte nicht zugreifen.....da bereits verwendet wird" - es werden aber alle VErzeichnisse verschoben.

Ein Problem welches ich noch habe ist, dass keine Dateien verschoben werden - sondern nur die Ordner.

PS: Damit er keinen Ordner anzeigt der ein komplettes Jahr enthält - also "Jahr 2006", "Jahr 2005" etc... kann ich da einfach mehrere && machen, oder wie kann man dies geschickter lösen?


MfG Sandro
Bitte warten ..
Mitglied: Biber
03.01.2008 um 12:29 Uhr
Moin Saggi,

das können wir natürlich jetzt schrittweise verfeinern.
Bisher ist es ja nur eine Konzeptskizze, ein Proof of Concept.

Ich habe nur noch das Problem, dass ich 6 mal den Ausruf "Prozess onte nicht zugreifen.....da bereits verwendet wird" - es werden aber alle VErzeichnisse verschoben.
Das wird daran liegen, dass ja nun die Verzeichnisstruktur, die mit FOR/D durchwackelt wird, gleichzeitig geändert wird.
Dann machen wir das stufenweise - wir ermitteln erst die Unterverzeichnisse, die geMOVEd werden sollen und machen das eigentliche MOVE danach.

Ein Problem welches ich noch habe ist, dass keine Dateien verschoben werden - sondern nur die Ordner
Okay, das kann daran liegen, dass ich auch bisher nur die Verzeichnisse anfasse und keine Zeile für die Einzeldateien im (Ober-)Ordner vorgesehen habe.

Ausgehen vom Batch oben dann:
01.
::----das wird ein Zwischen-Batch.cmd 
02.
@echo off 
03.
REM Zweistufiges Vorgehen - erst alles rausschreiben, was später verschoben werden soll: 
04.
Set "Tmpbat=%temp%\tmp.bat" 
05.
if exist "%tmpbat%" del "%tmpbat%" 
06.
for /D %%i in ("x:\HauptOrdner\*") do @( 
07.
     If exist "%%i\*.*" ECHO move "%%i\*.*" "%%i\Jahr 2006\" >>"%tmpbat%" 
08.
     for /D %%j in ( "%%i\*") do @( 
09.
        echo "%%~nxj"|find /v "Jahr 2006" >nul && ECHO move "%%j" "%%i\Jahr 2006" >>"%tmpbat%" 
10.
     ) )  
11.
if exist "%tmpbat%" call "%tmpbat%" 
12.
if exist "%tmpbat%" del "%tmpbat%"
So in etwa wäre die ungetestete Skizze, wenn davon ausgegangen werden könnte, dass sich in jeder Unterstruktur ein Ordner "Jahr 2006" befindet.
Wenn wir das noch erweitern dahingehend, das sich dort eintweder ein Ordner "Jahr 2005" ODER ein Ordner "Jahr 2006" oder ein Ordner "Jahr 2007" oder eben nichts von alledem befindet:
01.
::----das wird ein erweiterter Zwischen-Batch.cmd 
02.
@echo off & setlocal 
03.
REM Zweistufiges Vorgehen - erst alles rausschreiben, was später verschoben werden soll: 
04.
Set "Tmpbat=%temp%\tmp.bat" 
05.
if exist "%tmpbat%" del "%tmpbat%" 
06.
for /D %%i in ("x:\HauptOrdner\*") do @( 
07.
     For /L %%a in (2005,1,2008) do if exist "%%i\Jahr %%a" call :DoTheMoveTo "%%i" "Jahr %%a" 
08.
09.
if exist "%tmpbat%" call "%tmpbat%" 
10.
if exist "%tmpbat%" del "%tmpbat%" 
11.
goto :eof 
12.
 
13.
~~~~~~ 
14.
:DoTheMoveTo Parameter 1 ist das Oberverzeichnis über "Jahr 200x"; Param2 das gefundene Verzeichnis "Jahr 200x" 
15.
     If exist "%~1\*.*" ECHO move "%~1\*.*" "%~1\%~2\" >>"%tmpbat%" 
16.
     for /D %%j in ( "%~1\*") do @( 
17.
        echo "%%~nxj"|find /v "%~2" >nul && ECHO move "%%j" "%~1\%~2" >>"%tmpbat%" 
18.
     )  
19.
goto :eof
Auch dieses ungetestet.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Via Batch Ordner und Unterordner erstellen
gelöst Frage von supisupperBatch & Shell16 Kommentare

Hallo zusammen, ich habe auf ein Netzlaufwerk 2650 Ordner (Haupt und Unterordner zusammen) die ich in den letzten 10 ...

Windows Server
Automatisch erstellen von Ordner
gelöst Frage von MeisterFuchsWindows Server9 Kommentare

Hallo liebe Gemeinde Ich habe ein Problem Ich habe mit Windows Server 2008 R2 eine Domain erstellt. Bis jetzt ...

Batch & Shell
Wie Ordner und fortlaufend nummerierte Unterordner aus Text mit Batch erstellen?
gelöst Frage von LinoVanBinoBatch & Shell9 Kommentare

Hallo Zusammen, leider bin ich kein Script Fachmann, aber muss mich hier einer Aufgabe stellen. Ich muss/will mit einer ...

Windows Server
Automatisierter Default-Ordner in jedem Unterordner
gelöst Frage von VoiperWindows Server6 Kommentare

Hallo Zusammen, wir basteln im Unternehmen aktuell unsere Ordnerstruktur um und es kam der Wunsch auf, das in jedem ...

Neue Wissensbeiträge
Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 2 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 3 TagenWebbrowser7 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 3 TagenSicherheit6 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Digitiales Fernsehen

Apple TV: Amazon Prime App ist verfügbar

Information von Frank vor 4 TagenDigitiales Fernsehen4 Kommentare

Die Amazon Prime Video App kann ab sofort auf einem Apple TV ab der 3 Generation installiert werden. Einfach ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...