For Schleife - mehrere Dateinamen Teilstücke als Variable setzen
Hallo Community,
ich weiss gar nicht wie ich das in Worte fassen soll, alleine die Überschrift hat mich Minuten gekostet. Ziel ist es etwas zu sortieren. Alle Dateien in einem Verzeichnis sollen kopiert werden, der Name des neuen Verzeichnisses besteht aus einer Variablen des Dateinamens. Als Beispiel ist das glaube ich leichter:
ist der Ordner indem sich unzählige Dateien finden. Alle haben komplett andere Namen, aber ein Syntax ist immer gleich:
Also der vollständige Name wäre:
Mein Ziel ist es nun, die Datei Dokument Chef.A23B4.alt.pdf in den Ordner D:\Test\A23B4 zu kopieren.
Dokument User3.A4B8.alt.pdf soll in den Ordner D:\Test\A4B8 kopiert werden und Dokument.User4.A34B23.pdf nach D:\Test\A34B23.
Was ich also benötige ist immer diese Kombination aus dem Text. Das Problem, die Zahlen variieren von Datei zu Datei. Nur die beiden "." und die Buchstaben A und B sind immer gleich. Ich müsste also irgendwie in einer for Schleife das Teilstück:
suchen. Ich habe aber absolut keine Idee wie ich das bewerkstelligen kann, mein erster Versuch in der Batch sah so aus:
Natürlich funktioniert die Zeile die im rem ist absolut 0, aber genau diesen Part finde ich nicht. Also wie ich jetzt dieses Teilstück des Dateinamens (.A*B*.) als Variable "dir" setzen kann. Ich bin mir sicher das ist ein total einfacher string, nur fehlt mir der Fingerzeig.
Für Hilfe bin ich sehr dankbar.
ich weiss gar nicht wie ich das in Worte fassen soll, alleine die Überschrift hat mich Minuten gekostet. Ziel ist es etwas zu sortieren. Alle Dateien in einem Verzeichnis sollen kopiert werden, der Name des neuen Verzeichnisses besteht aus einer Variablen des Dateinamens. Als Beispiel ist das glaube ich leichter:
D:\Test
ist der Ordner indem sich unzählige Dateien finden. Alle haben komplett andere Namen, aber ein Syntax ist immer gleich:
.A23B4.
.A4B8.
.A34B23. usw.
Also der vollständige Name wäre:
Dokument Chef.A23B4.alt.pdf
Dokument User3.A4B8.alt.pdf
Dokument.User4.A34B23.pdf
Mein Ziel ist es nun, die Datei Dokument Chef.A23B4.alt.pdf in den Ordner D:\Test\A23B4 zu kopieren.
Dokument User3.A4B8.alt.pdf soll in den Ordner D:\Test\A4B8 kopiert werden und Dokument.User4.A34B23.pdf nach D:\Test\A34B23.
Was ich also benötige ist immer diese Kombination aus dem Text. Das Problem, die Zahlen variieren von Datei zu Datei. Nur die beiden "." und die Buchstaben A und B sind immer gleich. Ich müsste also irgendwie in einer for Schleife das Teilstück:
".A*B*."
suchen. Ich habe aber absolut keine Idee wie ich das bewerkstelligen kann, mein erster Versuch in der Batch sah so aus:
for %%a in ("%~dp1*.pdf") do (
set dir=%%~na
set name=%%~nxa
rem for /f %%b in (".*S*E*." "!name!" set "dir=%%b"
echo !dir!
pause
md "%~dp1!dir!"
move "%%a" "%~dp1!dir!">nul
)
Natürlich funktioniert die Zeile die im rem ist absolut 0, aber genau diesen Part finde ich nicht. Also wie ich jetzt dieses Teilstück des Dateinamens (.A*B*.) als Variable "dir" setzen kann. Ich bin mir sicher das ist ein total einfacher string, nur fehlt mir der Fingerzeig.
Für Hilfe bin ich sehr dankbar.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 5248509093
Url: https://administrator.de/contentid/5248509093
Ausgedruckt am: 25.11.2024 um 12:11 Uhr
4 Kommentare
Neuester Kommentar
for %%a in ("%~dp1*.pdf") do (
for /f "tokens=2 delims=." %%b in ("%%~nxa") do (
if not exist "%~dp1%%b" md "%~dp1%%b"
move "%%a" "%~dp1%%b\"
)
)
@echo off
PowerShell -EP Bypass -C "dir '%~dp1' -File -Filter *.pdf | ?{$_.Name -match '\.(A\d+B\d+)\.'} | %%{move-item $_.Fullname -Destination (md (Join-Path $_.DirectoryName $matches[1]) -Force).Fullname}"