Ich habe vor einigen Monaten ein Batchprogramm unter Windows 7 erstellt. Sein grundlegender Zweck besteht darin, die heruntergeladenen Dinge je nach Dateityp in verschiedene Ordner in den Bibliotheken zu organisieren und dann den Windows Media Player zu öffnen (damit meine Medien von meiner Xbox 360 aus zugänglich sind). Nach dem Upgrade auf Windows 10 funktioniert die Batchdatei überhaupt nicht mehr – anstatt Dateien zu verschieben, gibt sie nur Fehlermeldungen zurück, die sagen access is denied
: „. Obwohl die Dateistruktur unberührt geblieben ist.“ Der Code lautet wie folgt.
echo Organizing Your Videos . . .
move *.mp4 C:\Users\Devon\Videos
echo Your Videos have been Organized!
echo Organizing Your Images . . .
move *.jpg C:\Users\Devon\Pictures\
move *.bmp C:\Users\Devon\Pictures\
move *.gif C:\Users\Devon\Pictures\
move *.png C:\Users\Devon\Pictures\
move *.PNG C:\Users\Devon\Pictures\
echo Your images Have Been Organized!
echo ORGANIZATION PROTOCOL COMPLETE!!!
echo Starting Windows Media Player ...
echo Waiting 5 Seconds ...
timeout 5
start wmplayer.exe
Ich bin zu 99 % sicher, dass es sich um eine Art Syntaxfehler handelt, aber ich bin mir nicht sicher, wie ich ihn beheben kann oder ob ich es richtig mache. BEARBEITEN: Dies ist ein Bild des Fehlers, den ich erhalte:
Antwort1
Angenommen, Sie verschieben Dateien aus Ihrem Download-Ordner, würde ich es folgendermaßen schreiben:
@echo off
set "dwn=%USERPROFILE%\Downloads"
set "pic=%USERPROFILE%\Pictures"
set "vid=%USERPROFILE%\Videos"
echo Organizing Your Videos . . .
for /r "%dwn%" %%A in (*.mp4) do (move /y "%%A" "%vid%" >nul)
echo.
echo Your Videos have been Organized!
echo.
echo Organizing Your Images . . .
for /r "%dwn%" %%B in (*.jpg *.bmp *.gif *.png) do (move /y "%%B" "%pic%" >nul)
echo.
echo Your Images have been Organized!
echo.
echo _
echo /(^|
echo ( :
echo __\ \ _____
echo (____) `^|
echo (____)^| ^|
echo (____).__^|
echo (___)__.^|_____
echo.
echo ORGANIZATION PROTOCOL COMPLETE!!!
echo.
echo Starting Windows Media Player . . .
echo.
echo Waiting 5 seconds . . .
timeout 5 >nul
start wmplayer.exe
die for /r
Schleifen durchlaufen alle Dateien in einem Verzeichnis – das erscheint übertrieben, wenn Sie nur einen Videodateityp haben, aber Sie können in einer Zeile sehen, wie die Bilder behandelt werden; Sie können bei Bedarf dasselbe für andere Videotypen tun. Ich habe die Dinge nach meinen persönlichen Vorlieben verteilt und aus irgendeinem Grund habe ich das Gefühl, dass Sie die Eleganz eines Daumen hochs zu schätzen wissen würden, daher habe ich mehr Zeit darauf verwendet als auf das Schreiben des Codes – da ich ein wirklich gutes Gespür für Prioritäten habe. Ich bevorzuge immer Variablen, wenn sie die Dinge aufräumen und verhindern können, dass Sie Pfade in mehreren verschiedenen Zeilen ändern müssen. Die Umgebungsvariable %USERPROFILE%
ist auch bewährte Vorgehensweise, wenn Sie innerhalb des Profils arbeiten, das Ihr Skript ändert – was Sie tun. Beachten Sie, dass %USERPROFILE%
, wenn Sie dieses Skript als Administrator von einem Konto aus ausführen, das nicht über Administratorrechte verfügt, es stattdessen im Benutzerprofil des Administrators arbeitet/dieses ändert.
Beachten Sie auch, dass bei Dateierweiterungen die Groß-/Kleinschreibung nicht beachtet wird. Deshalb habe ich das entfernt .PNG
.
Antwort2
Das Problem ist die Verzeichnisumgebung, in der Ihr cmd-Skript ausgeführt wird.
Es läuft inc:\Windows\System32
Es versucht also, Systemdateien statt Dateien aus Ihren Downloads zu verschieben.
Ändern Sie das Skript, um explizit den Pfad zu Ihrem Download-Ordner anzugeben, dann sollte es problemlos funktionieren.
echo Organizing Your Videos . . .
move C:\Users\Devon\Downloads\*.mp4 C:\Users\Devon\Videos
echo Your Videos have been Organized!
echo Organizing Your Images . . .
move C:\Users\Devon\Downloads\*.jpg C:\Users\Devon\Pictures\
move C:\Users\Devon\Downloads\*.bmp C:\Users\Devon\Pictures\
move C:\Users\Devon\Downloads\*.gif C:\Users\Devon\Pictures\
move C:\Users\Devon\Downloads\*.png C:\Users\Devon\Pictures\
move C:\Users\Devon\Downloads\*.PNG C:\Users\Devon\Pictures\
echo Your images Have Been Organized!
echo ORGANIZATION PROTOCOL COMPLETE!!!
echo Starting Windows Media Player ...
echo Waiting 5 Seconds ...
timeout 5
start wmplayer.exe
Obwohl Sie eigentlich die Benutzerprofilvariable anstelle des Pfads auf beiden Seiten verwenden sollten, um zukunftssicher zu sein