Ich verwende Windows Shell CopyHere Methode, um Archive in einigen Stapeln zu entpacken. Im Allgemeinen funktioniert es, wie in dem folgenden Skriptbeispiel gezeigt, gibt aber in einigen Fällen einen Fehler. Insbesondere habe ich festgestellt, es gibt einen Fehler beim Entpacken eines Archivs in einen speziellen Systemordner wie Downloads, wenn es von einem Benutzer an einen neuen Speicherort verschoben wurde, trotz der Ordner Symlink wurde von OS in seiner Standardposition in das Benutzerprofil, und der Benutzer hat Schreibberechtigungen für den neuen Standort.Unterstützt die CopyHere-Methode von Windows Shell die Umleitung?
Gibt es eine Möglichkeit, diese Einschränkung zu umgehen oder den folgenden Code zu ändern, ohne den allgemeinen Batch-Hybrid-Ansatz zu ändern?
<!-- : Begin batch script
@echo off
set "dir=%temp%" & set "file=%USERPROFILE%\Backup\archive.zip\"
cscript //nologo "%~f0?.wsf" "%dir%" "%file%"
exit /b
----- Begin wsf script --->
<job><script language="VBScript">
set fso = CreateObject("Scripting.FileSystemObject")
Set Ag=Wscript.Arguments
If NOT fso.FolderExists(Ag(0)) Then
fso.CreateFolder(Ag(0))
End If
set objShell = CreateObject("Shell.Application")
set FilesInZip = objShell.NameSpace(Ag(1)).items
objShell.NameSpace(Ag(0)).CopyHere(FilesInZip)
set fso = Nothing
set objShell = Nothing
</script></job>
:: Error if user profile's Downloads folder was moved from default location
\test.bat?.wsf(15, 3) Microsoft VBScript runtime error: Object required: 'objShell.NameSpace(...)'
@ Dummy00001 Warum denken Sie Shell-Tag auf meine Frage nicht relevant ist, wenn es direkt über die fragt Shell-Methode im Stapel verwendet? IMO ist ein typisches Beispiel für unnötige geringfügige Bearbeitung, die durch SO-Regeln verboten ist, die gemacht wurden, um Downvote zu rechtfertigen, ohne dass versucht wird, die Frage zu beantworten. – sambul35
Der Stapel ist ein Hybrid, bitte entfernen Sie das Shell-Tag nicht. Leider wird jedes Tag, das sich auf Shell-Methoden bezieht, vom Site auf das Shell-Tag gekürzt. – sambul35
Das Shell-Tag wird für Unix/Linux/POSIX-Shells verwendet, nicht für Windows. Lesen Sie einfach die Beschreibung des Tags. – Dummy00001