我搜索了如何在批处理代码中打开文件夹,如下所示
%SystemRoot%\explorer.exe "c:\Yaya\yoyo\"
但是,如果我每次执行批处理程序时都要提供特定的文件夹怎么办?
如果您不介意,还能告诉我如何在C ++中使用它吗? 通过scanf很难改变路径..
目前我有
#include <windows.h>
#include <iostream>
int main ()
{
HINSTANCE result;
result=ShellExecute(NULL,NULL,L"c:\my_folder_path_by_input",NULL,NULL,SW_SHOWDEFAULT);
if ((int)result<=32)
std::cout << "Error!\nReturn value: " << (int)result << "\n";
return 0;
}
答案 0 :(得分:0)
运行包含文件夹路径的批处理文件作为参数打开,并在批处理文件%SystemRoot%\explorer.exe "%~1"
中使用,或者甚至更好%SystemRoot%\explorer.exe /e,"%~1"
。
示例:
批处理文件OpenFolder.bat
包含:
@echo off
if "%~1" == "" (
%SystemRoot%\explorer.exe
) else (
%SystemRoot%\explorer.exe /e,"%~1"
)
此批处理文件例如使用下面的一行启动:
OpenFolder.bat
OpenFolder.bat %windir%\Temp
OpenFolder.bat "%TEMP%"
OpenFolder.bat "%APPDATA%"
OpenFolder.bat "%USERPROFILE%\Desktop"
始终可以用双引号括起文件夹路径,但如果文件夹路径包含任何空格字符或其中一个字符,则真正需要的是运行OpenFolder
时的双引号:&()[]{}^=;!'+,`~
另见Windows Explorer Command-Line Options
我不确定为什么在Windows资源管理器中打开特定文件夹根本不需要批处理文件。按 Windows + E 将在从Windows 95开始的任何Windows中打开一个新的Windows资源管理器窗口。在Explorer窗口的地址栏中输入上面的一个字符串会导致显示相应的文件夹。另请参阅有关Windows Keyboard Shortcuts的Microsoft页面。
如果未在启动批处理文件时将其指定为参数,则还有一个批处理版本要求用户输入文件夹路径。
@echo off
if not "%~1" == "" (
%SystemRoot%\explorer.exe /e,"%~1"
goto :EOF
)
rem There is no folder path specified as parameter.
rem Prompt user for folder path and predefine the environment variable
rem with a double quote as value to avoid batch processing exit because of
rem a syntax error if the batch file user just hits key RETURN or ENTER.
set "FolderPath=""
set /P "FolderPath=Folder path: "
rem Remove all double quotes from string entered by the user.
set "FolderPath=%FolderPath:"=%"
if "%FolderPath%" == "" (
%SystemRoot%\explorer.exe
) else (
%SystemRoot%\explorer.exe /e,"%FolderPath%"
set "FolderPath="
)
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
call /?
...解释%~1
(第一个没有双引号的参数)。echo /?
goto /?
if /?
rem /?
set /?