A
ananda6359
Guest
The system shell for Windows Vista has been purposely built by Microsoft
such that ...
- When files of various types are selected simultaneously, the option
to open them is made inaccessible to the system shell, whether through
their context menu or the keyboard (i.e., pressing {Enter}). This is
governed by file extensions, not by the program handling the files
(e.g., it occurs when *.doc and *.docx files are simultaneously
selected).
- When more than 15 (i.e., 16 or more) files of the same type are
selected, the same event occurs.
This is documented by Zack Robinson, a Microsoft senior developer, in
the post
http://www.vistax64.com/vista-music-pictures-video/119450-opening-multiple-files-2.html#post749024.
Here's a workaround that solves both problems and places the solution
in the context menu.
It requires only creating a Visual Basic script and creating a shortcut
to it in the Send To folder.
2
- Create or download (rename its extension to *.vbs) the script
attached to this post (code posted below):
Code:
--------------------
on error resume next
nl=vbcrlf
wait=200
set shell=wscript.createobject("wscript.shell")
set filesystem=createobject("scripting.filesystemobject")
set scriptfile=filesystem.getfile(wscript.scriptfullname)
stamp=scriptfile.datelastmodified
stamparray=split(year(stamp)&"."&month(stamp)&"."&day(stamp)&"."&hour(stamp)&"."&minute(stamp)&"."&second(stamp),".")
version=stamparray(0)
for loopversion=1to ubound(stamparray)
versionlength=len(stamparray(loopversion))
if versionlength<2 then stamparray(loopversion)=string(2-versionlength,"0")&stamparray(loopversion)
version=version&"."&stamparray(loopversion)
next
set contents=filesystem.opentextfile(wscript.scriptfullname,1)
contents=split(contents.readall,nl)
unit=4^5
set files=wscript.arguments
if files.count<1 then
do
wait=inputbox(nl&nl&"Set a period, in milliseconds, to wait while files open:",filesystem.getbasename(scriptfile)&" v"&version&" : "&int(scriptfile.size/unit)&"k"&(scriptfile.size/unit-int(scriptfile.size/unit))*unit&"b : "&ubound(contents)&" lines",wait)
if wait=empty then wscript.quit
if isnumeric(wait) then exit do
loop
set scriptfile=filesystem.createtextfile(wscript.scriptfullname)
for loopcontents=0to ubound(contents)
newline=contents(loopcontents)
if instr(newline,"wait=")>0 and isnumeric(replace(newline,"wait=","")) then newline="wait="&wait
scriptfile.write(newline)
if loopcontents<ubound(contents) then scriptfile.write(nl)
next
else
for each file in files
shell.run """"&file&""""
wscript.sleep wait
next
end if
--------------------
- Create a shortcut to it and place the shortcut in your Send To
folder. If you can't find your Send To folder, press Windows+R and
run "shell:sendto".
Now, when you right-click on a file or files, choosing the (for
example) "0_file_execution" entry in the Send To list will open all
selected files.
Running the script directly, instead of passing it files as arguments
from the Send To list item, allows you to set the amount of time that
separates the opening of each file; if you set this value too low, Vista
may fail to open all files.
+-------------------------------------------------------------------+
|Filename: 0_file_execution.txt |
|Download: http://forums.techarena.in/attachment.php?attachmentid=7279|
+-------------------------------------------------------------------+
--
ananda6359
------------------------------------------------------------------------
ananda6359's Profile: http://forums.techarena.in/members/ananda6359.htm
View this thread: http://forums.techarena.in/vista-help/1056937.htm
http://forums.techarena.in
such that ...
- When files of various types are selected simultaneously, the option
to open them is made inaccessible to the system shell, whether through
their context menu or the keyboard (i.e., pressing {Enter}). This is
governed by file extensions, not by the program handling the files
(e.g., it occurs when *.doc and *.docx files are simultaneously
selected).
- When more than 15 (i.e., 16 or more) files of the same type are
selected, the same event occurs.
This is documented by Zack Robinson, a Microsoft senior developer, in
the post
http://www.vistax64.com/vista-music-pictures-video/119450-opening-multiple-files-2.html#post749024.
Here's a workaround that solves both problems and places the solution
in the context menu.
It requires only creating a Visual Basic script and creating a shortcut
to it in the Send To folder.
2
- Create or download (rename its extension to *.vbs) the script
attached to this post (code posted below):
Code:
--------------------
on error resume next
nl=vbcrlf
wait=200
set shell=wscript.createobject("wscript.shell")
set filesystem=createobject("scripting.filesystemobject")
set scriptfile=filesystem.getfile(wscript.scriptfullname)
stamp=scriptfile.datelastmodified
stamparray=split(year(stamp)&"."&month(stamp)&"."&day(stamp)&"."&hour(stamp)&"."&minute(stamp)&"."&second(stamp),".")
version=stamparray(0)
for loopversion=1to ubound(stamparray)
versionlength=len(stamparray(loopversion))
if versionlength<2 then stamparray(loopversion)=string(2-versionlength,"0")&stamparray(loopversion)
version=version&"."&stamparray(loopversion)
next
set contents=filesystem.opentextfile(wscript.scriptfullname,1)
contents=split(contents.readall,nl)
unit=4^5
set files=wscript.arguments
if files.count<1 then
do
wait=inputbox(nl&nl&"Set a period, in milliseconds, to wait while files open:",filesystem.getbasename(scriptfile)&" v"&version&" : "&int(scriptfile.size/unit)&"k"&(scriptfile.size/unit-int(scriptfile.size/unit))*unit&"b : "&ubound(contents)&" lines",wait)
if wait=empty then wscript.quit
if isnumeric(wait) then exit do
loop
set scriptfile=filesystem.createtextfile(wscript.scriptfullname)
for loopcontents=0to ubound(contents)
newline=contents(loopcontents)
if instr(newline,"wait=")>0 and isnumeric(replace(newline,"wait=","")) then newline="wait="&wait
scriptfile.write(newline)
if loopcontents<ubound(contents) then scriptfile.write(nl)
next
else
for each file in files
shell.run """"&file&""""
wscript.sleep wait
next
end if
--------------------
- Create a shortcut to it and place the shortcut in your Send To
folder. If you can't find your Send To folder, press Windows+R and
run "shell:sendto".
Now, when you right-click on a file or files, choosing the (for
example) "0_file_execution" entry in the Send To list will open all
selected files.
Running the script directly, instead of passing it files as arguments
from the Send To list item, allows you to set the amount of time that
separates the opening of each file; if you set this value too low, Vista
may fail to open all files.
+-------------------------------------------------------------------+
|Filename: 0_file_execution.txt |
|Download: http://forums.techarena.in/attachment.php?attachmentid=7279|
+-------------------------------------------------------------------+
--
ananda6359
------------------------------------------------------------------------
ananda6359's Profile: http://forums.techarena.in/members/ananda6359.htm
View this thread: http://forums.techarena.in/vista-help/1056937.htm
http://forums.techarena.in