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, 1788 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Ordner und Datei Name gleich (BATCH) (12)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch: alle Ordner mit einem bestimmten Namen kopieren (4)

Frage von Remsboys zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
gelöst Raid-Controller (Areca) Datenverlust trotz R5 (16)

Frage von sebastian2608 zum Thema Festplatten, SSD, Raid ...

Server-Hardware
HP ProLiant DL380 G7, POST Error: 1785-Drive Array not Configured (10)

Frage von Paderman zum Thema Server-Hardware ...

Server-Hardware
Starker PC zum Virtualisieren (10)

Frage von canlot zum Thema Server-Hardware ...

Microsoft Office
gelöst Office 365 Pro Domäne einrichten OHNE Webseite (9)

Frage von thklemm zum Thema Microsoft Office ...