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

BATCH - Dateien umbenennen und mit SUBINACL Rechte vergeben!

Frage Entwicklung Batch & Shell

Mitglied: rique1me

rique1me (Level 1) - Jetzt verbinden

15.10.2008, aktualisiert 17.10.2008, 7625 Aufrufe, 18 Kommentare

So habe nun von meinen Ausbilder eine neue Aufgabe bekommen.
Hoffe Ihr könnt mir da ein wenig helfen.

Ich habe nun die Aufgabe bekommen, ein Skript zu schreiben, was Dateien sortiert.

Das heißt ich habe einen Ordner mit verschiedenen Dateien:

Text1.txt
Text2.txt
...
Bild1.bmp
Bild2.bmp
...
Pro1.exe
Pro2.exe
...

Nun soll das Skript die Dateien in verschiedene Ordner auf ein Netzlaufwerk kopieren.
So sollen zum Beispiel die Text-Dateien in ein Ordner txt, die bilder in bmp usw.
Die Ordner sollen immer an Hand der Endung (exe, txt usw) erstellt werden.

Wenn das alles klappt soll ich irgendwie mit SUBINACL die Rechte soeinstellen,
das zwei weitere User aus unserer Domäne auf meine Ordner vollen Zugriff haben.

Hoffe ihr könnt mir helfen.
Mitglied: bastla
15.10.2008 um 09:39 Uhr
Hallo rique1me!
Hoffe ihr könnt mir helfen.
Das wird ziemlich sicher so sein - allerdings sollst ja Du die Ausbildung machen, daher poste bitte einmal Deinen bisherigen Entwurf.

Tipp: Sieh Dir mit "for /?" (oder über "Start / Hilfe und Support / Suchen: for") einmal die Hilfe zur "for"-Schleife genau an ...

Grüße
bastla
Bitte warten ..
Mitglied: rique1me
15.10.2008 um 10:07 Uhr
Skript kann ich ja halbwegs aber ich weiß nicht wie ich das subinacl einbauen kann
Bitte warten ..
Mitglied: an-wei
15.10.2008 um 10:19 Uhr
dann solltest du mal 'etwas' im netz stoebern. dann findest du zb diverse seiten, wie diese eine oder diese andere hier.
auch soll man es kaum glauben, selbst microsoft hat was im angebot.

und hier im forum wirst du garantiert auch fuendig, wenn du danach suchst.
spass bei seite... finden tut man ueberall eine ganze menge, wenn man will und sich auch die arbeit macht will.

gruesse
andré
Bitte warten ..
Mitglied: rique1me
15.10.2008 um 10:56 Uhr
na gut aber wie bekomm ich das hin, dass die datei selbstständig die endungen (txt, bmp usw) herausfindet und dementsprechend ordner erstellt?

komm da echt nicht drauf und hab in der richtung nix gefunden
Bitte warten ..
Mitglied: rique1me
15.10.2008 um 12:45 Uhr
ich könnte da echt hilfe gebrauchen
komm hier net weiter
Bitte warten ..
Mitglied: bastla
15.10.2008 um 13:18 Uhr
Hallo rique1me!

Konkret: An welcher Stelle kommst Du nicht weiter - bis jetzt ist noch nichts von Deinen Bemühungen zu sehen.

Vielleicht sollte ich Dir einen Tipp geben (oder habe ich das schon? ) ...

Grüße
bastla
Bitte warten ..
Mitglied: rique1me
15.10.2008 um 13:45 Uhr
das hab ich :
sry das mit der formatierung bekomm ich net hin


@echo off

:Start
REM ~~~~~Variable deklarieren~~~~~
set suf=
set /p suf=Geben Sie die Endung der zu kopierenden Datei(en) an!
:Pfad
set pfad=
set /p pfad=Geben Sie den Pfad der zu kopierenden Datei(en) an!
cd %pfad%

if "%errorlevel%"=="0" (
goto :Next
) else (
echo Der angegebene Pfad konnte nicht gefunden werden!
goto :Pfad
)

:Next
REM ~~~~~Sucht nach dem passenden Verzeichnis mit der entsprechenden Endung~~~~~~
REM ~~~~~Wird das Verzeichnis nicht gefunden, springt das Skript zu NeuerOrdner%suf%~~~~~
for %%i in (*.%suf%) do dir /a-d "w:\ordner\%Suf%" >nul 2>nul || goto :NeuerOrdner

:xcopy
REM ~~~~~Hier wird der Xcopy-Befehl durchgeführt~~~~~
xcopy /y *.%suf% w:\ordner\%suf%\
echo Kopieren beendet!
goto :ask

:NeuerOrdner
echo Ornder "%suf%" wird erstellt!
REM ~~~~~Ein Ordner mit der entsprechenden Endung wird erstellt~~~~~
mkdir w:\ordner\%suf%
REM ~~~~~Meldung wird ausgegeben, dass der Ordner erstellt wurde~~~~~
echo Ordner "%suf%" erstellt!
goto :xcopy

:ask
set ask=
set /p ask=Wollen Sie weitere Datei(en) kopieren? (J/N)
if /i "%ask%"=="j" (
goto :Start
)
if /i "%ask%"=="n" (
goto :eof
) else (
echo Falsche Eingabe!
goto :ask
)

oben habe ich das mit der eingabe gemacht.

aber ich will eigentlich, dass sich das skript die variable selber ausliest.
das heißt ohne abfrage.
er soll von selbst in den angegeben ordner nach inhalt suchen und die gefunden endungen als variable speichern.
Bitte warten ..
Mitglied: miniversum
15.10.2008 um 20:37 Uhr
Ok etwas mehr Hilfe gebe ich dir jetzt noch.
Der Ablauf kann so aussehen:
1. Schau im Ordner nach welche Dateien dort sind.
Tip hier:Das Dir mit parameter /b gibt dir eine Direkte liste mit den Dateinamen.
2. Diese Dateiliste gehst du einzeln nach einander durch, schaust welche endung sie haben, erstllst einen entsprechenden Ordner und verschiebst die Dateien.
Tip hier: Das durchgehen der Einzelnen dateien geht mit der For-Schleife. Das herausfinden wie die endung einer Datei ist ist ebenfalls in der Hilfe des Forbefehls beschrieben. Ist zwar ein verhältnissmäsig langer text, aber es lohnt sich zu wissen was For alles kann, auch für später.
Noch mehr und deutlichere Hilfe wäre dann zu leicht.
Bitte warten ..
Mitglied: Biber
15.10.2008 um 21:47 Uhr
Moin rique1me,

eine Variation von miniversums Vorgehen wäre, das Prüfen und ggf. Anlegen der Ordner in einer eigenen Schleifenkonstruktion anzugehen.
Und erst in einer zweiten Runde alle Dateien in die richtigen Ordner zu verschieben mit einer Schleife über alle Dateien..
Denn (auch wenn mein Krusch-Ordner sicherlich nicht der Maßstab sein sollte) bei mir habe ich vielleicht 400 Dateien im Ordner mit vielleicht 30 verschiedenen Endungen. Worum sollte ich also bei jeder Datei, also 400x einen Ordner auf Existenz prüfen und ggf. anlegen wollen?

Alle in einem vorhandenen unterschiedlichen Datei-Endungen kannst Du mit einer simplen Zeile vom Cmd-Prompt aus in eine Variable Allx (für "alle Extensions") bekommen.
[Vorher: "mode con cols=177 lines=77"]
01.
setlocal enabledelayedexpansion&set "x="& @set "allx=."& for /f %i in ('dir /oe /a-d /b') do @if /i "!x!" neq "%~xi" (set "x=%~xi"&set "allx=!allx!%~xi") 
02.
### Danach steht in der Variablen %allx% siehe nächsten 2 Zeilen ### 
03.
>set allx 
04.
allx=..asc.bat.cmd.csv.doc.exe.gif.gz.hugo.inf.ini.jpg.js.kmp.log.lst.m3u.mdb.mov.nix.out.pdb.pdf.pkb.ppd.prc.ps1.pst.RCJ.reg.rtf.tif.tmp.txt.VBS.xls.zip 
05.
### Oder, so Du es zum Prüfen/Anlegen der Ordner brauchst: 
06.
>For %i in (%allx:.= %) do @if not exist %i\ echo md %i 
07.
md asc 
08.
md bat 
09.
md cmd 
10.
md csv 
11.
md doc 
12.
md exe 
13.
md gif 
14.
md gz 
15.
md hugo 
16.
md inf 
17.
md ini 
18.
md jpg 
19.
md js 
20.
md kmp 
21.
md log 
22.
md lst 
23.
md m3u 
24.
md mdb 
25.
md mov 
26.
md nix 
27.
md out 
28.
md pdb 
29.
md pdf 
30.
md pkb 
31.
md ppd 
32.
md prc 
33.
md ps1 
34.
md pst 
35.
md RCJ 
36.
md reg 
37.
md rtf 
38.
md tif 
39.
md tmp 
40.
md txt 
41.
md VBS 
42.
md xls 
43.
md zip
Also ist eigentlich mit 2 Zeilen schon die ganze Ordner-Sicherstellung abgefrühstückt.
....okay, man/frau könnte es auch in eine Zeile schreiben, ich weiss...

Das Sauberste (oder zumindest meine Strategie) wäre allerdings, nach dem Prüfen/Anlegen von "asc" auch gleich alle *.asc-Dateien mit zu verschieben... die Endung hab ich ja grad in der Hand...
01.
For %i in (%allx:.= %) do @(if not exist %i\ echo md %i) & @echo move *.%i %i\ 
02.
md asc 
03.
move *.asc asc\ 
04.
md bat 
05.
move * bat bat\ 
06.
md cmd 
07.
move *.cmd .cmd\ 
08.
md csv 
09.
move * csv csv\ 
10.
....
["echo" nur zum gefahrlosen Testen]

Grüße
Biber
[Edit] @bastla
bzw, da es ja eigentlich um's Kopieren ging, ...
Okay, dann sind mehrere Zeilen in der Tat überflüssiger Luxus, dann reicht eine.... *fg
[/Edit]
Bitte warten ..
Mitglied: bastla
15.10.2008 um 21:54 Uhr
... bzw, da es ja eigentlich um's Kopieren ging, einfach "xcopy" verwenden, wodurch der Ordner bei Bedarf automatisch erstellt wird ...

Grüße
bastla

[Edit] @Biber
Oh, ein Pleonasmus - da muss ich mir bei geTuemII ein "hybsch" ausborgen ...
[/Edit]
Bitte warten ..
Mitglied: rique1me
16.10.2008 um 07:38 Uhr
und mit einer for schleife geht das nicht?

dir /b >"%pfad%pfadlog.txt"
FOR /F "eol=; tokens=2 delims=. " %%i in (%pfad%pfadlog.txt) do (
set suf=%%i
Bitte warten ..
Mitglied: bastla
16.10.2008 um 08:28 Uhr
Hallo rique1me!

Doch, eine "for"-Schleife ist genau das, was Du brauchst. Was Du (falls es keine anderen Gründe dafür geben sollte) nicht brauchst, ist die Umleitung der "dir"-Ausgabe in eine Datei - daher:
for /f "tokens=2 delims=." %%i in ('dir /b') do set suf=%%i
Ein weiterer Hinweis: Durch
set suf=%%i
wird zwar bei jedem Schleifendurchlauf der jeweilige Typ in die Variable geschrieben, allerdings kannst Du auf den aktuellen Wert von %suf% innerhalb der Schleife nur zugreifen, wenn Du vorher mit
setlocal enabledelayedexpansion
die "verzögerte Variablenauflösung" aktiviert hast (anderenfalls wird nur zu Beginn der Schleife der Wert von %suf% ermittelt und immer in der Schleife verwendet). Dann musst Du den Variablennamen allerdings als !suf! (anstellen von %suf%) schreiben:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set suf=vor der Schleife gesetzt 
03.
for /f "tokens=2 delims=." %%i in ('dir /b') do ( 
04.
    set suf=%%i 
05.
    echo Nicht so:   %suf% 
06.
    echo sondern so: !suf! 
07.
)
Dein Ansatz hat übrigens eine uU gewichtige Einschränkung: Der Dateiname selbst darf keinen Punkt enthalten (Du verwendest ja durch "tokens=2 delims=." den Teil des Namens nach dem ersten und vor dem zweiten ".")! Du solltest Dir daher trotzdem noch genauer ansehen, was "for" noch zu bieten hat (in der Hilfe ziemlich am Ende, oder in Bibers Vorschlag oben).

Grüße
bastla

P.S.: Die Formatierung als "Code" ist nun aber wirklich nicht so schwierig: Mit < code> (ev Zusatz type="plain", um die Zeilennummern zu unterdrücken) kennzeichnest Du den Beginn eines Code-Blocks, und mit < /code> dessen Ende (in beiden Fällen ohne das Leerzeichen). Die Verwendung siehst Du auch, wenn Du für diesen Kommentar "mit Zitat" anklickst ...
Bitte warten ..
Mitglied: rique1me
16.10.2008 um 12:20 Uhr
So die Schleife funktioniert:


FOR /F "eol=; tokens=2 delims=. " %%i in (%pfad%pfadlog.txt) do @if not exist %%i\ (
md w:\test\%%i
@echo Ordner %ziel\%%i wurde erstellt!

jetzt muss ich nur noch die subinacl geschichte mit reinbringen und davon hab ich keine ahnung
Bitte warten ..
Mitglied: rique1me
16.10.2008 um 15:19 Uhr
wie kann ich dateien suchen ohne das ordner mitangezeigt werden

dir /b ???
Bitte warten ..
Mitglied: miniversum
16.10.2008 um 19:35 Uhr
Ja.
Du kannst ja alle Befehle gesondert an der MD testen. dan siehst Du was passiert. Bei Anzeigenden befehlen wir Dir ist das ja unproblematisch.
Bitte warten ..
Mitglied: Biber
16.10.2008 um 22:26 Uhr
Moin rique1me,
Zitat von rique1me:
wie kann ich dateien suchen ohne das ordner mitangezeigt werden

dir /b ???

....und wenn ganz was Verrücktes ausprobieren magst, dann probier doch mal den
dir /oe /a-d /b
...-Befehl aus, den ich ein paar Dezimeter oberhalb extra für Dich breitgetreten habe.
Druckst Du eigentlich die Antworten auf Deine Fragen aus und benutzt die Rückseite für TicTacToe oder wie handhabst Du das hier mit dem Forum?

Grüße
Biber
aka der Ohne-Ende-Geduldige
Bitte warten ..
Mitglied: rique1me
17.10.2008 um 07:32 Uhr
Was meinst du damit biber?
Weiß jetzt nicht wo du hinaus willst?
Bitte warten ..
Mitglied: miniversum
17.10.2008 um 11:30 Uhr
Ich denke der liebe Biber will dir damit deutlich machen das er weiter oben (am 15.10.2008 um 21:47:46 Uhr) mehrere Zeilen Code gepostet hat. Lies diese Zeilen und versuche sie nachzuvollziehen wie sie funktionieren und was sie bewirken. Zu jedem darin enthaltenen Befehl bekommst du durch anfügen des Parameters /? die Hilfe angezeigt. Lies die Hilfe zu diesen Befehlen auch mal ganz durch. Auch was die Parameter bewirken. Damit sollten sich dann deine Fragen klären.

Die Methode in-der-Hilfe-des-Befehls-nachschauen-und-sehe-wofür-die-Parameter-gut-sind funktioniert zusammen mit der Methode ich-probier-die-einzelnen-Befehle-einfach-mal-aus meistens recht gut, nicht nur bei den oben verwendeten Befehle, sondern auch bei sehr vielen Anderen.
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
gelöst Per Batch Dateien in einen Ordner - ext. Festplatte übertragen (2)

Frage von tocksick zum Thema Batch & Shell ...

Windows Server
Zuordnung von Netzlaufwerken mit Hilfe von Batch-Dateien (4)

Frage von doc-jochim zum Thema Windows Server ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (10)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...