Forum: PC Hard- und Software Ordner umbenennen


von Sebastian R. (sebr)


Lesenswert?

Ich such ein Tool oder Skript (für Windows) um den Namen von Ordnern 
umzudrehen, quasi zu spiegeln. So soll "Ordnername" nach der Umwandlung 
zu "emanrendrO" werden. Mit den in den Ordnern enthaltenen Dateien soll 
nichts passieren.

von Daniel A. (daniel-a)


Lesenswert?

Das ist eigentlich für Linux, aber unter Windows sollte es mit MSYS oder 
cygwin auch gehen:
1
# Aktuelles verzeichnis
2
for name in *
3
  do mv --backup=nil "$name" "$(echo "$name"|rev)"
4
done
5
6
# Aktuelles verzeichnis + unterverzeichnisse
7
find . -not -path '*/.*' -not -path . | tac | while IFS='' read name
8
  do mv --backup=nil "$name" "$(dirname "$name")/$(basename "$name"|rev)"
9
done

von cmd² (Gast)


Lesenswert?

Wenn man nix installieren möchte, könnte man abgesehen von der 
PowerShell immer noch den Kommandointerpreter aka cmd.exe verwenden.

Folgenden Text als revdir.cmd speichern.
1
@echo off
2
@setlocal EnableExtensions, EnableDelayedExpansion
3
4
if "%~1"=="" goto :eof
5
if not exist "%~1" goto :eof
6
7
if /I "%~2"=="/1" goto :par1
8
if /I "%~2"=="/r" goto :parr
9
10
:--- name
11
call :rendir "%~1"
12
goto :eof
13
14
:--- one level
15
:par1
16
  FOR /F "delims=" %%d IN ('dir "%~1" /b/a:d') DO call :rendir "%%d"
17
goto :eof
18
19
:--- recursive
20
:parr
21
  FOR /F "delims=" %%d IN ('dir "%~1" /s/b/a:d ^| sort /r') DO call :rendir "%%d"
22
goto :eof
23
24
25
:-------------------------
26
: extract name and path from
27
: parameter 1
28
: reverses the name and
29
: renames directory
30
31
:rendir
32
  set dname=%~n1
33
  set dpath=%~dp1
34
  call :revname
35
36
  rem echo "dpath : "!dpath!
37
  rem echo "dname : "!dname!
38
  rem echo "rname : "!rname!
39
  echo move "!dpath!!dname!" "!dpath!!rname!"
40
41
  REM move /Y "!dpath!!dname!" "!dpath!!rname!"
42
43
goto :eof
44
45
:--------------------------
46
: reverses up to 255 chars
47
: in parameter dname
48
: result is returned in rname
49
50
:revname
51
set rname=
52
FOR /L %%i IN (255,-1,0) DO (
53
 set char=!dname:~%%i,1!
54
 if not "!char!"=="" (
55
   rem echo %%i
56
   rem echo !char!
57
   set rname=!rname!!char!
58
 )
59
)
60
goto :eof

Aufruf mit revdir.cmd "startdir" [/1|/r].

Ohne Parameter wird nur "startdir" umbenannt; mit /1 werde alle direkt 
unter "startdir" liegenden Verzeichnisse und mit /r auch alle weiter 
darunter befindlichen Verzeichnisse umgedreht - ohne "startdir" zu 
ändern.

Derzeit wird nur das Ergebnis angezeigt; wenn tatsächlich umbenannt 
werden soll den REMark vor dem move entfernen.

von Kommandozeile vor dem Frühstück für Alle! (Gast)


Lesenswert?

Ich freue mich! Auch wenn dies mehr eine Denksportaufgabe war: wiedermal 
ein handfester Beweis warum CMD.EXE (und sein Officetauglicher 
Spielelader drumrum) nicht ernsthaft zu gebrauchen ist.
Auch wenn in der sh/ksh/bash-Welt nicht alles perfekt ist[1], sie bietet 
einfach bessere "manipulexity & whipuptitude".

[1] muss man kennen:
- shell quoting hell
- Variablen global per default
- viele Unterprozesse = langsam
- "nur" prozedural, nicht OO

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

wieder zwei neue Wörter gelernt, hier das vermutliche Originalzitat:
https://en.wikiquote.org/wiki/Larry_Wall#.22Present_Continuous_-_Future_Perfect.22
manipulexity: the manipulation of complex things
whipuptitude: the aptitude for whipping things up

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.