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 Umwandlung von short file names in long file names und umgekehrt

Frage Entwicklung Batch & Shell

Mitglied: Progfreund

Progfreund (Level 1) - Jetzt verbinden

22.06.2011, aktualisiert 23.06.2011, 4695 Aufrufe, 11 Kommentare

Wie kann man den short file name von %TEMP% in einen long file name umwandeln/bestimmen und als Variable(n) speichern?
Wie kann man allgemein einen short file name in einen long file name umwandeln?

Hallo.
Ich möchte die Umgebnungsvariable %TEMP% als Speicherort wählen und verarbeiten, nur wird der Pfad
abgekürzt nach der 8.3-Regel. Ich wollte die long file names des Pfads haben, um den Pfad durch delims=\
zu zerlegen und zu vergleichen.
Deshalb wollte ich bei short file names durch die Navigation durch relative Pfade die absoluten Pfade als long file names bestimmen, was verständlicherweise nicht geht.
Welche Möglichkeiten gibt es, den short file name von %TEMP% in einen long file name umzuwandeln bzw. allgemein
einen short file name in einen long file name umzuwandeln?

LG

01.
echo off 
02.
echo hallo>>%TEMP%\Hallo.txt ::allgemeines Prinzip, nur um eine Datei im Ordner zu speichern. 
03.
exit
01.
cd %TEMP% 
02.
cd .\.. 
03.
cd .\.. 
04.
cd .\.. ::bringt nichts, weil der Username immer noch im 8:3 Format ist.
01.
echo %SYSTEMDRIVE% 
02.
echo %USERNAME% 
03.
set "Speicherpfad=%SYSTEMDRIVE%\Users\%USERNAME%\AppData\Local\Temp" ::jeder kann sich seine Umgebungsvariable individuell einstellen, daher nicht allgemein.
Mitglied: 60730
22.06.2011 um 18:50 Uhr
hi,
wie machst du das?
Bitte warten ..
Mitglied: Clijsters
22.06.2011 um 19:10 Uhr
Zitat von Progfreund:
Hallo.
Hallo
Ich möchte die Umgebnungsvariable %TEMP% als Speicherort wählen und verarbeiten
Das geht. Ist auch nicht schwer.
nur wird der Pfad abgekürzt nach der 8.3-Formel.
Ist das ein Problem?
Deshalb möchte ich relative Pfade in absolute Pfade umwandeln.
Was hat denn das mit deinem "Problem" zu tun?
Gibt es eine Regel für das Setzen von relativen bzw. absoluten Pfaden und die Rekonvertierung?
oO?! s.o.

LG
Gruß
Dominique
Bitte warten ..
Mitglied: Progfreund
22.06.2011 um 20:31 Uhr
Zitat von Clijsters:
Das geht. Ist auch nicht schwer.
Na, da bin ich mal gespannt. >>%TEMP% ;)
Ist das ein Problem?
Ja.
Was hat denn das mit deinem "Problem" zu tun?
s.o.

Und wenn noch wer richtige Tipps hat, bitte nur rein.
Bitte warten ..
Mitglied: 60730
22.06.2011 um 21:06 Uhr
Zitat von Progfreund:
Na, da bin ich mal gespannt. >>%TEMP% ;)
Und wenn noch wer richtige Tipps hat, bitte nur rein.


  • mea culpa - aber ehrlich - muss das sein?

  • halbfertige Fragen stellen ist ja schon die halbe Miete, gezielte Gegenfragen zu ignorieren der Rest...

01.
for /f "tokens=2,*" %a in ('reg query HKCU\Environment ^|find /i "temp"') do echo %b
Und immer noch stellt sich die Frage - wo ist das Problem?


Ich melde mich erst wieder, wenn die Ferien vorbei sind - macht ja derzeit gar keinen Sinn...
Bitte warten ..
Mitglied: bastla
22.06.2011 um 22:22 Uhr
Hallo Progfreund!

Sorry - ich verstehe auch nicht, was Du eigentlich willst (bzw was mit 8.3-Namen nicht mindestens genauso gut möglich wäre); auch was ">>%TEMP%" sollte, ist mir nicht klar (eine Umleitung der Ausgabe mit einem Ordner als Ziel kann ja auch für andere Ordner nicht funktionieren), und wenn Du eine Datei in diesem Ordner ("%TEMP%\Datei.txt") als Ziel wählst, sehe ich das Problem nicht ...
Deine Verwendung der Begriffe "relativer" bzw "absoluter" Pfad, finde ich übrigens, äh, gewöhnungsbedürftig ...

Grüße
bastla
Bitte warten ..
Mitglied: Progfreund
22.06.2011 um 22:42 Uhr
Danke, TimoBeil.

@bastla: es sollte >>%TEMP%\Datei.txt sein.
Die Abfrage nach den Umgebungsvariablen sollte dazu dienen, in Fällen, in denen ein
Speichern dort nicht möglich ist, eine andere Umgebungsvariable zu wählen.
Welche Begriffe verwendest du für beide Varianten?

Erklärung:
User Umgebungsvariablen sind in der registry gespeichert unter:
01.
HKEY_CURRENT_USER\Environment
Systemvariablen sind in der registry gepeichert unter:
01.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
Die untere FOR-Schleife durchsucht die Registrierung unter dem o.g. Register nach der Zeichenkette "temp" und gibt sie wieder.
01.
for /f "tokens=2,*" %a in ('reg query HKCU\Environment ^|find /i "temp"') do echo %b
Auskunft zu reg query
(siehe Kommandozeile: )
01.
reg /? 
02.
REG Befehl [Parameterliste] 
03.
 
04.
  Befehl  [ QUERY   | ADD    | DELETE  | COPY
05.
            SAVE    | LOAD   | UNLOAD  | RESTORE | 
06.
            COMPARE | EXPORT | IMPORT  | FLAGS ] 
07.
 
08.
Rückgabecode: (Mit Ausnahme von REG COMPARE) 
09.
 
10.
  0 - Erfolgreich 
11.
  1 - Fehlgeschlagen 
12.
 
13.
Geben Sie Folgendes ein, um die Hilfe für einen Befehl anzuzeigen: 
14.
 
15.
  REG Befehl /? 
16.
 
17.
Beispiele: 
18.
 
19.
  REG QUERY /? 
20.
  REG ADD /? 
21.
  REG DELETE /? 
22.
  REG COPY /? 
23.
  REG SAVE /? 
24.
  REG RESTORE /? 
25.
  REG LOAD /? 
26.
  REG UNLOAD /? 
27.
  REG COMPARE /? 
28.
  REG EXPORT /? 
29.
  REG IMPORT /?
Bitte warten ..
Mitglied: bastla
22.06.2011 um 22:50 Uhr
Hallo Progfreund!
Die Abfrage nach den Umgebungsvariablen sollte dazu dienen, in Fällen, in denen ein
Speichern dort nicht möglich ist, eine andere Umgebungsvariable zu wählen.
Bleibt für mich weiterhin unverständlich - wieso sollte ein Speichern dort nicht möglich sein, und welche "andere Umgebungsvariable" würdest Du dann wählen?
Welche Begriffe verwendest du für beide Varianten?
Ich weiß ja noch nicht einmal, welche Varianten Du meinst (und auch noch immer nicht, wobei Dir 8.3-Namen Probleme bereiten) ...

... aber ein relativer Pfad wäre zB
..\Nebenordner\Nebenunterordner
- ich muss nur wissen, wie ich vom Ausgangspfad zum Zielpfad komme (hier eben: eine Ordnerebene nach oben, und dann in "Nebenordner" und von dort aus in "Nebenunterordner"), aber nicht, ob sich dieser Zielpfad unterhalb von "D:\" oder von "X:\Was\weiss\ich\wo" (= jeweils "absolut") befindet ...

Grüße
bastla
Bitte warten ..
Mitglied: Progfreund
22.06.2011 um 23:13 Uhr
Danke, bastla.

Ich habe die Navigation mit .\.. ersetzt durch die Abfrage der Umgebungsvariablen %TEMP%.
Vorher habe ich überlegt, es anders zu machen, daher die Frage.
Der Beitrag ist nun gelöst, da oben durch die FOR-Schleife ein long file name abgefragt werden kann und der Versuch durch
Navigation mit cd .\.. bzw. cd .. der short file name nicht wie gewollt durch den long file name ersetzt werden kann. Desweiteren
habe ich unten eine Anleitung zur Konvertierung von long file names zu short file names beigefügt.
Die long file names lassen sich aus der registry entnehmen, die short file names lassen sich entnehmen aus z.B. echo %TEMP% bzw. lassen sich
manuell erstellen.

Zu den 8.3 Namen:
01.
short filename: 
02.
C:\Users\TestUs~1\AppData\Local\Temp 
03.
long filename: 
04.
C:\Users\TestUser\AppData\Local\Temp
01.
dir /x  ::short names und falls vorhanden long file names 
02.
dir /-n ::nur short file names
01.
Konvertierung eines long file name in einen short file name nach der 8.3 Regel: 
02.
 
03.
- ein short file name kann maximal 8 Zeichen vor dem Punkt haben. 
04.
- Hat der long file name mehr als 8 Zeichen, dann schreibe die ersten 6 Namenszeichen, 
05.
  dann ein Tilde-Zeichen (~) als 7. Zeichen und eine Zahl, meist 1 als 8. Zeichen. 
06.
- Die Nummer hinter dem Tilde-Zeichen (~) unterscheidet den short file name von 
07.
  anderen file names, die am Anfang auch 6 Zeichen haben und dieselbe Endung haben. 
08.
 
09.
- Punkte in Namen sind sehr wichtig, sie müssen auch für Ordner verwendet werden, 
10.
  sofern diese einen Punkt im Namen haben. 
11.
- Wenn es mehrere Punkte im Datei- oder Ordnernamen gibt, wird nur der letzte verwendet, 
12.
  die voranstehenden Punkte werden nicht beachtet. 
13.
- Wenn es mehr als drei Punkte hinter dem letzten Punkt gibt, werden nur die ersten drei 
14.
  verwendet. 
15.
 
16.
  Allgemein gilt: 
17.
- Leerzeichen in Datei- und Ordnernamen sollten bei der Konvertierung nicht beachtet werden, 
18.
  sie werden ausgelassen. 
19.
- Punkte in Datei- und Ordnernamen werden bis auf den letzten Punkt nicht beachtet und ebenso 
20.
  ausgelassen wie Leerzeichen. 
21.
- Kommata und eckige Klammern ( [ und ] ) werden als Unterstrich ( _ ) geschrieben. 
22.
- Groß- und Kleinschreibung ist nicht bedeutend, beide werden gleich behandelt.
Bitte warten ..
Mitglied: bastla
22.06.2011 um 23:22 Uhr
Hallo Progfreund!

Danke für die Information, aber mir ist schon klar, wie 8.3-Namen aussehen - was ich nicht verstehe, ist, was Dich daran stört / Dir Probleme bereitet (da ganz im Gegenteil die Kurzschreibweise im Zweifelsfall nützlich ist, weil darin weder Leerzeichen noch zB Umlaute - etwa bei "Startmenü" - vorkommen) ...
Ich habe die Navigation mit .\.. ersetzt durch die Abfrage der Umgebungsvariablen %TEMP%.
Abgesehen davon, dass anstelle von ".\.." auch, wie oben gezeigt, ".." genügt, war das nur ein Beispiel für eine typische Verwendung relativer Pfade - auch
Unterordner\Unterunterordner
ist (bezogen auf einen Ausgangspfad) ein relativer Pfad - absolut würde er zB so aussehen:
D:\Daten\Abteilung4\Unterordner\Unterunterordner
Grüße
bastla
Bitte warten ..
Mitglied: Clijsters
22.06.2011 um 23:37 Uhr
Zitat von Progfreund:
> Zitat von Clijsters:
> Das geht. Ist auch nicht schwer.
Na, da bin ich mal gespannt. >>%TEMP% ;)
Also, so leid es mir tut... Aber das ist mehr als unnötig. Und meines Erachtens nach (wie oben bereits erwähnt) nicht funktionstüchtig...
> Ist das ein Problem?
Ja.
Und das - Naja, Wenn du dein Problem definieren könntest, was das mit relativen und absoluten Pfaden zu tun hat, werde ich mein Bestes geben,
dir zu helfen und produktive Antworten zu geben...
> Was hat denn das mit deinem "Problem" zu tun?
s.o.
Kein Kommentar

Und wenn noch wer richtige Tipps hat, bitte nur rein.
Richtige Frage = Richtiger Tipp :D

Und jetzt einmal im Ernst:
Bis jetzt habe ich nach all den Versuchen von Bastla und T-Mo noch keine schlüssige Frage / Problemstellung erkennen können.
Wenn du mir ganz einfach sagen könntest, was dein Problem ist, wo es hapert oder am Besten: Was du genau vor hast,
wird hier sicherlich jeder inklusive mir sein Bestes geben, dir zu helfen.

Gruß
Dominique
Bitte warten ..
Mitglied: Biber
23.06.2011 um 01:14 Uhr
Moin Progfreund,

Zitat von Progfreund:
Ich möchte die Umgebnungsvariable %TEMP% als Speicherort wählen und verarbeiten,
nur wird der Pfad abgekürzt nach der 8.3-Formel.
Das ist keine "Formel", sondern eine "Regel".
Die wird immer dann angewendet, wenn das Dateisystemobjekt(Datei, Pfad,..) sich nicht an Namenskonventionen hält, die z.B. auf USB-Sticks, Win95-Rechnern oder CDs noch üblich sind oder auch, ganz banal, wenn die darin enthaltenen Zeichen nicht im Standardzeichensatz eines jeden Windows-Users enthalten sind.

Beispiel:
>echo x>üöüäö.txt 
 
>dir /x *.txt 
... 
23.06.2011  00:25                 3 33B9~1.TXT   üöüäö.txt 
               1 Datei(en)              3 Bytes  
 
--> diese Datei wurde nicht mit einem short name versehen, weil der Name länger als 8 Zeichen ist, sondern wegén der Umlaute.
Und wie einfach zu erkennen ist, wurde einfach ein Hex-Timestamp als neuer Basis-8.3-Name genommen.
Hauptanliegen der Redmonder PraktikantInnen war ausschliesslich die Einhaltung der 8.3-"Regel".
Eine Formel zum Vor- und Zurückübersetzen war zu keinem Zeitpunkt vorgesehen und es gibt auch weltweit bislang nur einen Anwender, der danach gefragt hat.
:
Deshalb möchte ich relative Pfade in absolute Pfade umwandeln.
Wo wir gerade auf das Thema "Relativer und absoluter Schwachsinn" zu sprechen kommen....

Gibt es eine Regel für das Setzen von relativen bzw. absoluten Pfaden und die Rekonvertierung?
Ich sach' ma' so....
Ich habe hier eine Regel für die Konvertierung von Beiträgen...

01.
cd %TEMP% 
02.
cd .\.. 
03.
cd .\.. 
04.
cd .\.. ::bringt nichts, weil der Username immer noch im 8:3 Format ist. 
05.
> 
Öhhmm - ja. ???? Damit willst du uns sagen...?? Oder.... nee... ?!? *kopfkratz* Hmmmm.
Das deutet zwar auf ein Problem hin, aber auf keines, das wir hier im Forum lösen können,

Die Abfrage nach den Umgebungsvariablen sollte dazu dienen, in Fällen, in denen ein
Speichern dort nicht möglich ist, eine andere Umgebungsvariable zu wählen.

Ich sach' ma' so...
Auf allen Windows-Rechnern gibt es ein %temp%-Verzeichnis, in dem jeder Schreibrechte hat, der irgendwie per Tastatur oder Maus den Eindruck erweckt, er wolle einen "Befehl" absetzen.
Die Seriösität von zwei kopulierenden Hummeln oder eine vom Baum auf die Tastatur fallende Sauerkirsche reicht dafür schon.
Warum also sollte Windows dann dir dieses Recht verwehren?

Aber einen Ort hier im Forum gibt es, in dem auch jeder unbegrenzte Schreibrechte hat:

### Papierkorb ###


Und zwar deshalb, weil es mich wirklich stinkesauer macht, wenn du nach 5 Stunden mit geduldigen Nachfragen und Bitten mehrerer Hilfewilliger, denen es trotz ehrlichen Bemühens nicht gelungen ist, dein subjektiv empfundenes Problem irgendwie erkennbar zu machen (außer dir weiss auch jetzt noch niemand, was denn deine Frage oder dein Ziel war)...

Wenn du dann nach 5 Stunden, in denen nicht mal die Frage geklärt war, geschweige denn eine Lösung, dann den Beitrag auf "erledigt" setzt, deiner Wege gehst und alle anderen hier mit grossen Fragezeichen in den Augen zurücklässt.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Kl. Frage: Log-File schreiben per Batch (3)

Frage von Yauhun zum Thema Batch & Shell ...

Batch & Shell
gelöst ( Batch ) Open File or Folder Dialog (5)

Frage von clragon zum Thema Batch & Shell ...

Windows 10
Batch: Copy file.txt Lokaler Drucker (1)

Frage von fluluk zum Thema Windows 10 ...

Batch & Shell
"Generic" Drucker mit batch - File erstellen (6)

Frage von MrPreesident zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...