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

Kopieren von txt Dateien in Ordner mit dem Namen der txt Datei

Frage Entwicklung Batch & Shell

Mitglied: Apeman

Apeman (Level 1) - Jetzt verbinden

08.06.2013, aktualisiert 03:17 Uhr, 1768 Aufrufe, 9 Kommentare

Hallo,

ich möchte mit einer batch Datei alle txt-Dateien aus dem Ordner Texte in den Ordner Neu kopieren, aber dort nicht einfach hinein, sondern immer in einen Unterordner mit dem Namen der darin befindlichen *.txt Datei. (Also : jede txt führt zu einen Ordner mit dem gleichen Namen)

Mein Problem ist jetzt, dass er mir die Ordner nicht erstellt und sie somit auch nicht mit der *.txt Datei füllen kann. Ich sehe aber nicht den Fehler in der Batch.

Bis jetzt bin ich so weit gekommen:


01.
@echo off 
02.
setlocal 
03.
 
04.
for %%i in ("Texte\*.txt") do (  
05.
 
06.
set "k=%%i:~0,-4%" 
07.
 
08.
md "%k%" 
09.
echo %k% 
10.
  
11.
copy "Texte\%i%" "Neu\%k%\%i%" 
12.
13.
pause

Schon mal vielen Dank im Voraus
Mitglied: Endoro
08.06.2013 um 09:26 Uhr
Hallo Apeman,

mein Vorschlag:
01.
@echo off 
02.
cd texte 
03.
for %%i in (*.txt) do ( 
04.
    md "%%~ni" 
05.
    copy "%%~i" "%%~ni" 
06.
)
Jetzt könnte ich noch einen Spruch über die SuFu und Google dalassen, mach ich natürlich nicht, weil ich ein Netter bin.
Ich halt einfach mal die Klappe (Kurt Beck würde sagen "das Maul", aber da bin ich mir doch zu fein für )

Liebe Grüsse.
Bitte warten ..
Mitglied: Apeman
08.06.2013, aktualisiert um 12:42 Uhr
Hallo Endoro,

erst mal vielen Dank für die schnelle Antwort.

Prinzipiell funktioniert dein Vorschlag, das Problem ist nur dass er nicht nur die *.txt aus dem Ordner "Texte" raussucht sondern aus seiner Umgebung (cd ist schlecht weil ich nachher noch in dem alten Ordner etwas machen will) und dann Packt er die Neuen Ordner in den Ordner in dem sich die *.txt's befinden (einsortieren klappt aber).


Ändere ich jetzt den copy Pfad, erstellt er die Ordner findet den neu angelegten Pfad aber nicht.

01.
@echo on 
02.
 
03.
for %%i in (Texte\*.txt) do ( 
04.
    md "Neu\%%~ni" 
05.
    copy "Texte\%%~i" "Neu\%%~ni\" 
06.
)


Und die zweite Sache ist, da ich den Namen der txt ohne die Endung nachher noch brauche, wollte ich ihn gerne als Variable ablegen ,was aber in meinem oberen script nicht klappt. Ich verstehe aber nicht warum.

Gruß

Apeman
Bitte warten ..
Mitglied: Endoro
08.06.2013, aktualisiert um 13:05 Uhr
Also z.B. so (Pfad sollte bei cd angepasst werden):
01.
@echo off 
02.
cd /d "X:\users\user\documents and settings\texte" 
03.
for %%i in (*.txt) do ( 
04.
    set "filename=%%~ni" 
05.
    set "fileextension=%%~xi" 
06.
    setlocal enabledelayedexpansion 
07.
    md "!filename!" 
08.
    copy "!filename!!fileextension!" "!filename!" 
09.
    endlocal 
10.
)
€dit:
Zitat von Apeman:
cd ist schlecht weil ich nachher noch in dem alten Ordner etwas machen will

Da passt pushd:
01.
@echo off 
02.
pushd "X:\users\user\documents and settings\texte" 
03.
for %%i in (*.txt) do ( 
04.
    set "filename=%%~ni" 
05.
    set "fileextension=%%~xi" 
06.
    setlocal enabledelayedexpansion 
07.
    md "!filename!" 
08.
    copy "!filename!!fileextension!" "!filename!" 
09.
    endlocal 
10.
11.
popd   &rem zurück zum Ausgangsordner
Gruss!
Bitte warten ..
Mitglied: Apeman
08.06.2013 um 13:07 Uhr
Super! das kommt dem schon mal sehr nahe.

Mein Problem ist halt noch, dass ich eben schlecht mit cd arbeiten kann (glaube ich zumindest), da ich alles in einem relativen Pfad haben muss und da ich auf die Ebene in der sich die batch befindet noch zugreifen muss. (jede text Datei muss mit einer exe gestartet werden und deren Output aus dem Ordner in dem auch die batch ist kopiert und genauso wie die txts einsortiert werden)

Oder müsste ich dann in der Schleife mit „cd“ immer hin und her springen?

Wenn ich das so versuche zu adaptieren:

01.
@echo off 
02.
setlocal 
03.
 
04.
 
05.
for %%i in ("Texte\*.txt") do (  
06.
 
07.
    set "filename=%%~ni" 
08.
    set "fileextension=%%~xi" 
09.
    setlocal enabledelayedexpansion 
10.
    md "Neu\!filename!" 
11.
  
12.
    copy "Texte\!filename!!filenameextension!" "Neu\!filename!" 
13.
    endlocal 
14.
15.
 
sagt er mir er kann den Ordner nicht finden

ich hätte vielleicht sofort sagen sollen was ich noch alles damit machen will.

Gruß
Bitte warten ..
Mitglied: Apeman
08.06.2013 um 13:23 Uhr
da haben wir wohl relativ zeitgleich geschrieben.

Um auf deinen Edit ein zu gehen:

Auch da packt er dann die neuen Ordner in den "Texte" Ordner, sie sollen aber in den Ordner "Neu", so wie ich es immer wieder in meinen Scripten versuche.
Dort findet er aber die neu angelegte Ordnerstruktur nicht und ich sehe den Fehler nicht

Ordner Struktur:

/batch Darin befindet sich die batch
/batch/Texte darin sind die Texte
/batch/Neu da sollen die neuen ordner und die neuen txt's rein
Bitte warten ..
Mitglied: Apeman
08.06.2013 um 13:44 Uhr
Ich hab es hinbekommen.

Dank deines Tipps mit:

setlocal enabledelayedexpansion

Klappt das Script jetzt so wie ich es haben möchte.

01.
@echo off 
02.
 
03.
for %%i in (Texte\*.txt) do ( 
04.
    set "filename=%%~ni" 
05.
    set "fileextension=%%~xi" 
06.
    setlocal enabledelayedexpansion 
07.
     
08.
    md "Neu\!filename!" 
09.
     
10.
    copy "Texte\!filename!!fileextension!" "Neu/!filename!" 
11.
    endlocal 
12.
)
Vielen Dank!!!!
Bitte warten ..
Mitglied: Endoro
08.06.2013 um 13:51 Uhr
In Batch kannst du einfach so eine Variable verwenden, ohne sie zu deklarieren.
Sie wird dann als Leerstring oder im Fall von set /a mit "0" initialisiert:

01.
copy "Texte\!filename!!filenameextension!" "Neu\!filename!" 
In diesem Fall ist !filenameextension! einfach leer.

Gruss!
Bitte warten ..
Mitglied: Apeman
08.06.2013 um 15:33 Uhr
Ah ok.

Vielen Dank nochmal!!

Meinetwegen kann der Thread dann auch geschlossen werden
Bitte warten ..
Mitglied: bastla
09.06.2013, aktualisiert um 00:47 Uhr
... wobei (wie von Endoro oben gezeigt) die zusätzlichen Variablen (und damit "delayedExpansion") ja gar nicht nötig wären, und mit "xcopy" auch automatisch der Zielordner erstellt würde:
01.
@echo off 
02.
 
03.
for %%i in (Texte\*.txt) do xcopy "%%i" "Neu\%%~ni\"
Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...