Nach falsch benannten Dateien suchen

steinbock87

Cadet 1st Year
Registriert
Feb. 2014
Beiträge
8
Hallo zusammen habe folgendes Problem,

und zwar soll nach falsch benannten Dateien in allen Verzeichnissen (auch Austauschverzeichnissen) geschaut werden. Es sollen also die Dateinamen z.b. in der Console erscheinen die NICHT nach folgendem Muster abgespeichert wurden: des Untere ergibt dann den Dateinamen

Datum Unterstrich1 ID1 Unterstrich2
JJJJ-MM-TT _ X0000 _

--> hier gehts weiter

Bezeichnung Unterstrich3 Rest
C0007 _ XY_BLABLA_BLIBLI




Welchen Platz nimmt welcher Teil des Dateinamens ein:

Datum: Platz 1 bis 10

Unterstrich1: Platz 11

ID1: Platz 12 bis 16

Unterstrich2: Platz 17

Wenn Bezeichnung vorhanden ist
Bezeichnung: Platz 18 bis 22
Unterstrich3: Platz 23
Rest: Platz 24 bis Ende

Wenn Bezeichnung nicht vorhanden ist
Rest: Platz 18 bis Ende
 
Du könntest Freecommander in der portablen Version ausführen. Da gibt es ein Umbennennungstool, das sehr flexibel ist, inkl. Vorschau.

Es sei denn, Du willst eine permanente Lösung.
 
Wäre gut, wenn du mal nen korrekten Dateinamen, ohne Umbrüchen, Whitespaces etc. notierst. Windows/Linux?
 
Ein sehr mächtiges Umbennenungstool dabei noch Freeware ist:

Advanced Renamer

Ich kenne kein Tool mit größerem Funktionsumfang.
 
wupi schrieb:

Hab mir das runtergeladen, installiert und angeschaut (aber zugegebenermaßen nicht länger damit gearbeitet). Mein Ersteindruck ist JEIN. Es gibt zwar das ein oder andere, das ich bei Advanced Renamer so nicht gesehen habe, aber mehr umgekehrt. Was mir aber überhaupt nicht gefällt ist das Funktionsprinzip und die Arbeitsoberfläche. Die ist bei Advanced Renamer klar um Längen besser. Das Ganze ist dort wesentlich intuitiver, kann genau so viel, wirkt aber überhaupt nicht überladen und man kommt als Laie sofort damit klar. Beim BRU wird man dagegen von Optionen, die alle auf einer Ebene sind, förmlich erschlagen.

Ich könnte mir zwar vorstellen, daß für den eingefleischten Anwender viele Sachen effizienter gehen, gerade weil alles auf einem Fenster zusammengepfercht ist, aber ich denke trotzdem, daß hierbei die Nachteile überwiegen. Aus der Sicht des Programmierers sehe ich da eine Grundregel verletzt: Nicht mehr als 10-20 Elemente innerhalb einer Hierarchieebene. Alles was darüber ist wirkt unübersichtlich.
 
Also mit diesem Skript funktionierts, jetzt werden auf der Console alle falsch benannten Dateien angezeigt

dir /a-d /b /s *.*|findstr /vrec:"\\20[0-9][0-9]-[01][0-9]-[0-3][0-9]_[^\\][^\\][^\\][^\\][^\\]_[^\\][^\\]*\.[^\\]*"


Ich bräuchte noch eine Ergänzung in dem Skript was den jeweiligen Besitzer der falsch benannten Dateien anzeigt.

Mit Mausklick wäre der Besitzer so rauszufinden: Klick mit rechter Maustaste auf Datei-> Eigenschaften auswählen-> Registerkarte Details auswählen-> bei Besitzer steht dann der Verwantwortliche.

Und dieser Verantwortliche müsste dann mit auf der Console eine Zeile darunter angezeigt werden also so

Name der falsch benannten Datei
Name des Besitzers
Name der falsch benannten Datei
Name des Besitzers

Bitte dringend um Hilfe
 
Setz mal den /q Parameter bei dir, da zeigts dir den Owner mit an. Das könntest du dann mit einem for /f "tokens="... auseinandernehmen.
 
danke dir, aber hab leider keine ahnung wie des dann ausschauen soll, kenn mich mit batch nicht wirklich aus
 
Z.B.:
Code:
set owner=
for /f "tokens=4*" %%a in ('dir /q dateiname.txt ^| findstr dateiname.txt') do set owner=%%a

echo owner is: %owner%
 
hmm funktioniert leider nicht bei mir.

mal was anderes

Dieses Skript habe ich schon:


@echo off & setlocal enabledelayedexpansion



for /f "delims=" %%a in ('dir /a-d /b /s *.* ^| findstr /vrec:"\\20[0-9][0-9]-[01][0-9]-[0-3][0-9]_[^^\\][^^\\][^^\\][^^\\][^^\\]_[^^\\][^^\\]*\.[^^\\]*"') DO @(



echo %%a



call :getowner "%%a"



)



goto :ende



:getowner



for /f "skip=4 tokens=4" %%b in ('dir /q %*') DO @(



set owner=%%b


set owner=!owner:~0,23!



echo Besitzer: !owner!



goto :skip



)


:skip


goto :eof



:ende



aber auf der console werden auch richtig genannte Dateien mit dem oben gezeigten Skript aufgezeigt, das Problem ist folgendes:

siehe oben erster Eintrag im Forum

Welchen Platz nimmt welcher Teil des Dateinamens ein:

Datum: Platz 1 bis 10

Unterstrich1: Platz 11

ID1: Platz 12 bis 16

Unterstrich2: Platz 17

Wenn Bezeichnung vorhanden ist
Bezeichnung: Platz 18 bis 22
Unterstrich3: Platz 23
Rest: Platz 24 bis Ende

Wenn Bezeichnung nicht vorhanden ist
Rest: Platz 18 bis Ende



d.h. EGAL ob MIT Bezeichnung oder OHNE Bezeichnung BEIDE DATEIEN sind RICHTIG.

bitte um Hilfe
 
ich hätte noch eine Frage wie müsste dieses Skript jetzt aussehen wenn ich die Ergebnisse nicht nur in der Console angezeigt haben will sondern auch noch
in eine Textdatei schreibt


echo off & setlocal enabledelayedexpansion



for /f "delims=" %%a in ('dir /a-d /b /s *.* ^| findstr /vrec:"\\20[0-9][0-9]-[01][0-9]-[0-3][0-9]_[\\][\\][\\][\\][\\]_[\\][\\]*\.[\\]*" ^| findstr /vrec:"\\20[0-9][0-9]-[01][0-9]-[0-3][0-9]_[\\][\\][\\][\\][\\]_\.[\\]*"') DO @(



echo %%a



call :getowner "%%a"



)



goto :ende







:getowner



for /f "skip=4 tokens=4" %%b in ('dir /q %*') DO @(



set owner=%%b



set owner=!owner:~0,23!



echo Besitzer: !owner!



goto :skip



)



:skip



goto :eof







:ende
 
Sprünge sind ganz böse, besonders in einer Schleife. Und bitte mit [code]Code-Tags[/code] das nächste Mal, damit die Übersicht erhalten bleibt.
Code:
@echo off 
setlocal enabledelayedexpansion

for /f "delims=" %%a in ('dir /a-d /b /s *.* ^| findstr /vrec:"\\20[0-9][0-9]-[01][0-9]-[0-3][0-9]_[^^\\][^^\\][^^\\][^^\\][^^\\]_[^^\\][^^\\]*\.[^^\\]*"') do (
	echo %%a
	set owner=
	for /f "tokens=4*" %%a in ('dir /q %%a ^| findstr %%~na') do (
		if [!owner!] == [] (
			set owner=%%a
		)
	)
	echo owner is: %owner%
)
Wenn du die Ausgaben in eine Datei umleiten willst, kannst du das Script selbst aufrufen und die Ausgabe umleiten
Code:
dateien-sammeln.bat > ausgabe.txt
oder du leitest im Script direkt um
Code:
@echo off 
setlocal enabledelayedexpansion
set logfile=ausgabe.txt

copy /Y nul "%logfile%" > nul

for /f "delims=" %%a in ('dir /a-d /b /s *.* ^| findstr /vrec:"\\20[0-9][0-9]-[01][0-9]-[0-3][0-9]_[^^\\][^^\\][^^\\][^^\\][^^\\]_[^^\\][^^\\]*\.[^^\\]*"') do (
	echo %%a >> "%logfile%"
	set owner=
	for /f "tokens=4*" %%a in ('dir /q %%a ^| findstr %%~na') do (
		if [!owner!] == [] (
			set owner=%%a
		)
	)
	echo owner is: !owner! >> "%logfile%"
)

Ungetestet natürlich.
 
Hallo ich hätte noch eine Frage und zwar geht es darum , falsche Dateinamen in eine txt Datei zu schreiben
und bei den Dateinamen, sollen auch Umlaute(ä,Ä,ö,Ö,ü,Ü) mit berücksichtigt werden. Mit diesem Skript hier
werden alle falsch benannten Dateien in eine txt Datei geschrieben und die Umlaute werden dann in der txt Datei einfach durch ein ” ersetzt, jemand eine Idee, wie anstatt diesem Zeichen ” dann ein z.b. ö stehen kann?

Hier der Code:
Code:
echo off & setlocal enabledelayedexpansion 

set "ausgabe=D:\test.txt"
 
for /f "delims=" %%a in ('dir /a-d /b /s *.* ^| findstr /vrec:"\\20[0-9][0-9]-[01][0-9]-[0-3][0-9]
 _[\\][\\][\\][\\][\\]_[\\][\\]*\.[\\]*" ^| findstr /vrec:"\\20[0-9][0-9]-[01][0-9]
 -[0-3][0-9]_[\\][\\][\\][\\][\\]_\.[\\]*"') DO @(
 
      set filepath=%%a
 
      set filesize=%%~za
 
      set owner=
 
      echo %%a 

      call :getowner "%%a" 

      echo !filepath! / Besitzer: !owner! / !filesize! Bytes>>"%ausgabe%"
 
) 

goto :ende 

:getowner
 
   for /f "skip=4 tokens=4" %%b in ('dir /q %*') DO @( 

       set owner=%%b 

       set owner=!owner:~0,23!
 
       echo Besitzer: !owner!
 
       goto :skip 

   )
 
   :skip 

goto :eof
 
:ende
 
Ein chcp 65001 am Anfang sollte es bereits lösen. Damit wird die Codepage auf Unicode gesetzt.
 
vielen Dank. was müsste in einem VBA Excel 2010 Skript für ein Befehl eingefügt werden dass Umlaute(öäü ) erkannt werden?
 
Zurück
Oben