Lösung

Lösung

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 /aum 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 Settingswürde der Ordner im Stammverzeichnis des D:Laufwerks erstellt. Um dies zu vermeiden, verwenden Sie den /dParameter:

cd /d C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System

Der cdBefehl 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 mdstattdessen Folgendes verwenden:

md Settings

Anders als der cdBefehl, mkdirund mdLeerzeichen als Trennzeichen behandeln. Nehmen wir an, Sie führen diesen Befehl aus:

md Some settings

In diesem Fall werden zwei Ordner erstellt: Someund settings. Wenn Sie einen einzelnen Ordner mit dem Namen erstellen möchten, Some settingsmü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 Systemund Settingsexistieren 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

verwandte Informationen