Ich schreibe ein kurzes Batchprogramm, um einige Verknüpfungen zu verschieben.
Das Problem besteht darin, dass Windows die Meldung „Die angegebene Datei kann nicht gefunden werden“ zurückgibt.
Ich stelle mir vor, dass dies daran liegt, dass es entweder als Systemdatei betrachtet wird (denken Sie an die Benutzerkontensteuerung auf untergeordneter Ebene des „Systems“) oder dass es ausgeblendet ist, obwohl Sie es nicht ausblenden müssen, dir /a
um es in einer Verzeichnisliste anzuzeigen.
Was muss ich hier ändern? Die Dateinamen/Pfade sind alle korrekt, da ich sie direkt aus dem Windows Explorer kopiert habe.
cd C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System
mkdir Settings
cd C:\ProgramData\Microsoft\Windows\Start Menu
dir
move "Default Programs.lnk" "C:\ProgramData\Microsoft\Windows\Start Menu\System\Settings"
pause
Antwort1
Lösung
Das Problem liegt in der folgenden Codezeile:
move "Default Programs.lnk" "C:\ProgramData\Microsoft\Windows\Start Menu\System\Settings"
Wie @Scott anmerkt, ist der Zielpfad falsch. Insbesondere:
Start Menu\System
Dieser Teil sollte lauten:
Start Menu\Programs\System
Bemerkungen
Auch wenn Sie das Problem lösen konnten, gibt es noch weitere erwähnenswerte Dinge.
Den aktuellen Ordner ändern
cd C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System
Die obigen Befehle würden wahrscheinlich nicht wie erwartet funktionieren, wenn Sie sich auf einem Laufwerk befinden, auf das dies nicht zutrifft C:
:
D:\>cd C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System
D:\>mkdir Settings
Im obigen Beispiel Settings
würde der Ordner im Stammverzeichnis des D:
Laufwerks erstellt. Um dies zu vermeiden, verwenden Sie den /d
Parameter:
cd /d C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System
Der cd
Befehl behandelt Leerzeichen nicht als Trennzeichen, wenn Befehlserweiterungen aktiviert sind (standardmäßig sind sie das). Es ist trotzdem eine gute Idee, Anführungszeichen zu verwenden:
cd /d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System"
Der Ordner kann jedoch auch gar nicht auf dem C:
Laufwerk gespeichert sein. Anstatt den vollständigen Pfad fest zu codieren, können Sie den%ProgramData%
Umgebungsvariabledie mit Windows Vista eingeführt wurde:
cd /d "%programdata%\Microsoft\Windows\Start Menu\Programs\System"
In früheren Betriebssystemen hätten Sie %AllUsersProfile%
stattdessen verwendet. Bei Variablennamen wird die Groß-/Kleinschreibung nicht beachtet.
Ordner erstellen
mkdir Settings
Um Tipparbeit zu sparen, können Sie md
stattdessen Folgendes verwenden:
md Settings
Anders als der cd
Befehl, mkdir
und md
Leerzeichen als Trennzeichen behandeln. Nehmen wir an, Sie führen diesen Befehl aus:
md Some settings
In diesem Fall werden zwei Ordner erstellt: Some
und settings
. Wenn Sie einen einzelnen Ordner mit dem Namen erstellen möchten, Some settings
müssen Sie Anführungszeichen verwenden. Aus Konsistenzgründen empfehle ich, immer Anführungszeichen zu verwenden, auch wenn sie nicht obligatorisch sind:
md "Settings"
Sie können auch einen vollständigen Pfad angeben, etwa so:
md "%programdata%\Microsoft\Windows\Start Menu\Programs\System\Settings"
Die Unterordner System
und Settings
existieren normalerweise nicht und beide würden in einem Durchgang erstellt.
Weiterführende Literatur
Antwort2
Setzen Sie die Pfade immer in Anführungszeichen. Pfade mit Leerzeichen im Namen müssen in Anführungszeichen gesetzt werden.
benutze das :
cd "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System"
mkdir Settings
cd "C:\ProgramData\Microsoft\Windows\Start Menu"
dir
move "Default Programs.lnk" "C:\ProgramData\Microsoft\Windows\Start Menu\System\Settings"
pause