Wie erstelle ich ein Verzeichnis mit einem abschließenden Leerzeichen?

Wie erstelle ich ein Verzeichnis mit einem abschließenden Leerzeichen?

Ich verwende Windows 7 und muss aus Gründen, die außerhalb meiner Kontrolle liegen, ein Verzeichnis erstellen, das mit einem einzelnen Leerzeichen endet. Es wird verschiedene Dateien und Unterverzeichnisse enthalten.

Ich habe es mit mdund versucht rename, auch mit UNC-Pfaden, aber es ist nicht gelungen, entweder mit der Ausgabe einer „falschen Syntax“ oder, was häufiger vorkommt, mit dem einfachen Ignorieren des Leerzeichens.

Wie kann ich es tun?

Antwort1

Um in Windows ein Verzeichnis mit einem abschließenden Leerzeichen zu erstellen, öffnen Sie eine Eingabeaufforderung und geben Sie Folgendes ein:

md "\\?\C:\mydirectory "

Das Verzeichnis muss ein absolutes (kein relatives) Verzeichnis sein und muss das Präfix\\?\

Ebenso können Sie das Verzeichnis mit dem Befehl rd löschen

rd "\\?\C:\mydirectory "

aber das Verzeichnis muss leer sein, bevor es mit diesem Befehl gelöscht wird.

Antwort2

Cygwin kann

$ mkdir 'abcde'

$ mkdir 'abcde '

$ mkdir 'abcde  '

$ ls -l
total 0
drwxr-xr-x+ 1 user None 0 May 15 17:11 abcde
drwxr-xr-x+ 1 user None 0 May 15 17:11 abcde
drwxr-xr-x+ 1 user None 0 May 15 17:11 abcde

ok, es hat offensichtlich funktioniert, da wir 3 verschiedene Verzeichnisse haben, aber versuchen wir, einen weiteren Beweis zu erhalten

$ echo * | xxd
0000000: 6162 6364 6520 6162 6364 6520 2061 6263  abcde abcde  abc
0000010: 6465 2020 0a                             de  .

6162 6364 65 20<---- that's the dir abcde, and echo * put a space in after as there is another item it lists.

6162 6364 6520 20 <-- that's the dir 'abcde ', and echo * displayed it with a space in as there is another item it lists

61 62636465 2020 0a  <-- that's the dir 'abcde  ', and echo * displayed it followed by new line(0a)

Ein anderer

ls bietet einige Formatierungsoptionen wie vertikal und andere, z. B. mit Kommas

--format=WORD
       across -x, commas -m, horizontal -x, long -l, single-column  -1,
       verbose -l, vertical -C

--

$ ls -m
abcde, abcde , abcde

Beachten Sie das Leerzeichen vor dem Komma, das daher kommt, dass das Leerzeichen im Dateinamen vorkommt. Das ', ' dient der Formatierung. Aber ',' zeigt an, dass das Leerzeichen im Dateinamen vorkommt.

$ ls -m | xxd
0000000: 6162 6364 652c 2061 6263 6465 202c 2061  abcde, abcde , a
0000010: 6263 6465 2020 0a                        bcde  .

--

eine sehr klare Demonstration, ohne dass man sich zur Überprüfung ein Hex ansehen muss, ist-

$ mkdir 'abcde           '


$ mkdir z


$ ls -m
abcde, abcde , abcde  , abcde           , z


$

Eine andere Möglichkeit, wie Mafu in einem Kommentar erwähnt, ist Mingw, das ein Msys-Paket hat, das Sie im Ming-Mackage-Manager installieren können, und Msys installiert viele Befehle, z. C:\MinGW\msys\1.0\bin>B. in mkdir.exe, und hat auch eine bash.exe

Antwort3

Beachten Sie bitte, dass das Erstellen einer Datei, die von Windows nicht unterstützt wird, dazu führen kann, dass Sie sie nicht auf normalem Wege löschen können.

Booten Sie in eine Linux-Installation oder Live-CD und führen Sie dann diesen Befehl aus

mkdir "<mountpoint>/dirname"

Sie benötigen die Anführungszeichen.

Informationen zum Löschen finden Sie hier

verwandte Informationen