tiborf
Goto Top

Batch - Dateien nach Endung in Ordner sotieren

Aber nun zum Problem.
Ich bin eigentlich eher der Linux User aber jetzt muss ich was mit Batch machen.
Und zwar geht es darum dass das Script den Endbenutzer nach dem Namen einer Datei fragen soll.
Das Script sucht dann in dem Ordner, in dem das Script liegt, nach der Datei und sagt einem dann die Dateiendung und in welchen Ordner die Datei gehört.
Also um das ganze zu veranschaulichen schreib ich die Konservation sozusagen auf (">" sind Eingaben).
Die Datei Hallo.txt befindet sich im Ordner des Scripts.

Geben sie bitte den Dateinamen an:
Hallo
Die Datei Hallo.txt ist eine Textdatei und gehört in den Ordner "Berichte"

Also eigentlich nicht viel. Das ist auch nur der Teil meiner Aufgabe bei der ich wirklich Hilfe brauche. Also keine Sorge dass ihr mir die ganze Arbeit "abnehmt".
Ich bedanke mich schon mal im Vorraus

Content-Key: 135185

Url: https://administrator.de/contentid/135185

Printed on: April 19, 2024 at 22:04 o'clock

Member: Biber
Biber Feb 04, 2010 at 15:04:48 (UTC)
Goto Top
Moin Tiborf,

willkommen im Forum.

Tipp für die kommenden Beiträge: "Aber nun zum Problem." ist hier eine eher selten unkommentiert bleibende Begrüßungsformel, während Floskeln wie "Hallo", "Tach" oder "Selam" meist kein Feuer auf sich ziehen.
Und der Gruß "Ich bedanke mich schon mal im Vorraus" (egal mit wieviel "r" im Wort "voraus" signalisiert auch, dass möglichweise kein Feedback zu erwarten ist.

Aber nun zu deiner Frage. face-wink
Unklar ist mir
Das Script sucht dann in dem Ordner, in dem das Script liegt, nach der Datei und sagt einem dann die Dateiendung und in welchen Ordner die Datei gehört.
Hmmm, "...sagt einem dann die Dateiendung und in welchen Ordner die Datei gehört" ist für mich jetzt nicht wirklich ein implementierbares Verarbeitungsverfahren.
Da passiert ein kleines Wunder?

Klar dagegen sind mir an nötigen Hilfs-Werkzeugen, zu denen du dir die Hilfe am CMD-Prompt anschauen solltest:

  • der Befehl SET /P, mit dem du den Benutzer nach dem nächsten Namen fragen kannst
  • die FOR-Anweisung und dabei speziell die "abgeleiteten Laufvariablen" wie %~xi [DateieXtension] und %~ni [DateiName], die du wahrscheinlich brauchen wirst.

Hast du denn schon angefangen mit dem Schnipsel?

Grüße
Biber
Member: Tiborf
Tiborf Feb 05, 2010 at 20:20:04 (UTC)
Goto Top
Danke schon mal..
Ich finde auf einem Rechtschreibfehler sollte man nicht rumreiten. Und der Anfang entstand dadurch das ich eigentlich noch ein Lobtext in das Vorwort geschrieben hatte. Selbiger wurde anscheinend nicht mitgesendet. Denn mir würde es auch komisch vorkommen wenn jemand ein Gespräch so anfängt, selbst wenn dieser nicht der schlauste wäre.
Trotzdem möchte ich mich Entschuldigen.

Natürlich habe ich schon angefangen, aber mit einem anderen Teil, denn ich gebe zu das ich keine Ahnung hätte wie ich bei diesem Teil anfangen sollte.
Ein weiteres Problem von mir ist, dass ich mir im Forum die Beiträge durchlesen kann, aber es erst auf der Arbeit anwenden kann.
Zuhause ist mir ein VSystem mit einem Win OS zurzeit nicht möglich. Das sollte euch aber nicht stören face-smile .
Ich werde mir auch die Hilfe anschauen.
Die Datei sollte wie bei einem "dir" erscheinen:

...
hallo
...
dir /B hallo.*
hallo.txt

Nur wird das nich in der Art funktionieren.
Ich bräuchte sozusagen die gleiche Ausgabe nur hinter dem "hallo.txt" muss dann "gehört in den Ordner Berichte"
Der Endbenutzer des Scripts kennt also beim Benutzen nicht die Dateiendung sondern nur den Namen.
Die Ansicht-Funktion vom Explorer kann von Nutzer nicht angewendet werden und wird vom Admin auch nicht geändert.
Ich hoffe man versteht nun was ich meine.

Und danke im Voraus ist für mich keines Falls falsch zu verstehen. Es bedeutet einfach dass ich jedem Danke der sich schon die Mühe macht, ich ihm aber nicht 2 Minuten später danken kann.
In diesem Sinne.

MfG
Tibor
Member: rubberman
rubberman Feb 05, 2010 at 20:35:20 (UTC)
Goto Top
Hallo Tiborf,

ich erahne, wie du das ganze aufbauen willst. Schau mal, ob dich das etwas weiter bringt:
@echo off &setlocal

set typ(.txt)=Textdatei
set typ(.pdf)=PDF-Datei
:: usw.

set folder(.txt)=Ordner1
set folder(.pdf)=Ordner2
:: usw.

set /p "lookup=Gib den Dateinamen ein: "  
echo.

for /f "delims=" %%a in ('dir /a-d /b "%lookup%.*"') do (  
  set "file=%%a"  
  set "name=%%~na"  
  set "ext=%%~xa"   
)

call set "typOut=%%typ(%ext%)%%  
call set "folderOut=%%folder(%ext%)%%  

if defined file (
  echo Der Typ der Datei "%file%" ist "%typOut%".  
  echo Die Datei gehoert in das Verzeichnis "%folderOut%".  
)
echo.
pause

Grüße
rubberman
Member: Tiborf
Tiborf Feb 05, 2010 at 21:10:16 (UTC)
Goto Top
Das sieht für mein Wissen sehr viel versprechend aus.
Ich werde direkt Berichten wenn ich an ein WinOS rankomme.
Danke dir.