| @echo off |
| |
| :: Code by namejm 2009.3.12 Modified on 2009.3.13 |
| :: 不支持带感叹号的路径 |
| :: 争取对默认设置的次序进行重排 |
| |
| set TT="打开/另存为"对话框位置栏修改器 |
| title %TT% |
| mode con lines=25 cols=70 |
| setlocal enabledelayedexpansion |
| set RegPath=HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\comdlg32 |
| |
| :Main |
| cls |
| for /f "delims==" %%i in ('set place 2^>nul') do set "%%i=" |
| set custom= |
| for /f "skip=4 tokens=1,2*" %%i in ('reg query %RegPath%\Placesbar 2^>nul') do ( |
| set custom=yes |
| set "%%i=%%k" |
| ) |
| |
| :ShowConfigDefault |
| title %TT%-默认设置 |
| if not defined custom ( |
| echo.&echo 当前使用的是系统默认的设置 |
| echo ____________________________________________________________________ |
| echo.&echo 位置序号 对应的路径 |
| echo —————————————— |
| echo 1 我最近的文档 |
| echo 2 桌面 |
| echo 3 我的文档 |
| echo 4 我的电脑 |
| echo 5 网上邻居 |
| echo —————————————— |
| echo 建议自行设置更合理的位置 |
| echo.&echo. |
| echo. |
| echo 退出请按 0 全新设置请按 1 |
| echo ____________________________________________________________________ |
| echo. |
| set choice= |
| set /p choice= 请输入功能代码(0/1): |
| if not defined choice ( |
| goto Main |
| ) else ( |
| if "!choice!"=="0" exit |
| if "!choice!"=="1" goto SetNew |
| ) |
| goto ShowConfigDefault |
| ) |
| |
| :ShowConfigCustom |
| title %TT%-自定义设置 |
| cls |
| echo.&echo 当前使用的是用户自定义设置 |
| echo ____________________________________________________________________ |
| echo.&echo 位置序号 对应的路径 |
| echo —————————————————— |
| set num=0 |
| for /f "delims==" %%i in ('set path_ 2^>nul') do set "%%i=" |
| for /f "tokens=1* delims==" %%i in ('set place') do ( |
| set /a num+=1 |
| set "path_!num!=%%~j" |
| echo !num! "%%~j" |
| ) |
| echo —————————————————— |
| echo.&echo.&echo. |
| echo 退出请按 0 恢复默认设置请 1 |
| echo ____________________________________________________________________ |
| echo. |
| echo 调整当前设置的顺序请按 2 重新设置新路径请按 3 |
| echo. |
| set choice= |
| set /p choice= 请输入功能代码(0/1/2/3): |
| if not defined choice ( |
| goto ShowConfigCustom |
| ) else ( |
| if "%choice%"=="0" exit |
| if "%choice%"=="1" reg delete %RegPath% /f>nul&goto Main |
| if "%choice%"=="2" goto SortConfig |
| if "%choice%"=="3" goto SetNew |
| ) |
| goto ShowConfigCustom |
| |
| :SortConfig |
| title %TT%-调整顺序 |
| cls |
| echo.&echo 自定义位置的顺序 |
| echo ____________________________________________________________________ |
| echo.&echo 位置序号 对应的路径 |
| echo —————————————————— |
| for /f "tokens=2* delims=_=" %%i in ('set path_') do ( |
| set "str=%%j" |
| echo %%i "!str!" |
| ) |
| echo —————————————————— |
| echo.&echo ____________________________________________________________________ |
| echo. |
| echo 若要调整自定义位置的当前顺序,请按照以下步骤操作: |
| echo.&echo 重新排列 1~%num% 这%num%个数字,并以空格分隔 |
| echo.&echo 重排后的数字顺序就是新的路径顺序 |
| echo. |
| set order= |
| set /p order= 请依次输入重排后的数字,并以空格分隔(退出请按0): |
| if not defined order goto SortConfig |
| if "%order%"=="0" exit |
| set /a num1=0 |
| |
| :: 需要对形如 c:\ 的路径做特别处理 |
| for %%i in (%order%) do ( |
| if %%i gtr %num% goto SortConfig |
| set /a num2=%%i-1 |
| call set "var=%%place!num2!%%" |
| if "!var:~-1!"=="\" set "var=!var!\" |
| set "str!num1!=!var!" |
| set /a num1+=1 |
| ) |
| |
| set /a num-=1 |
| reg delete %RegPath%\Placesbar /f>nul |
| for /l %%i in (0,1,%num%) do ( |
| reg add %RegPath%\Placesbar /v place%%i /t REG_SZ /d "!str%%i!">nul |
| ) |
| echo.&pause |
| goto Main |
| |
| :SetNew |
| title %TT%-指定新路径 |
| cls |
| reg delete %RegPath% /f>nul 2>nul |
| echo.&echo 请指定新的路径 |
| echo ____________________________________________________________________ |
| echo.&echo 注意事项: |
| echo ① 不能输入不存在的路径 |
| echo ② 若只输入盘符,一定要以两条反斜杠结束, |
| echo 比如:c:\\ |
| echo ③ 若输入的是路径,结尾部分不能带任何反 |
| echo 斜杠,比如:c:\test |
| echo ④ 最多只能输入5条路径 |
| echo 小技巧:① 可以把文件夹直接拖曳到本窗口 |
| echo ② 输入的内容可以是类标识符(CLSID), |
| echo 但是需要在类标识符前加双冒号:: |
| echo ———————————————————————— |
| echo. |
| set num=0 |
| for /f "delims==" %%i in ('set str 2^>nul') do set "%%i=" |
| for /l %%i in (1,1,5) do ( |
| set /p str%%i= 请输入第%%i个路径(直接回车将结束输入): |
| if defined str%%i ( |
| set /a num+=1 |
| set "str%%i=!str%%i:"=!" |
| ) else goto ChangePath |
| ) |
| |
| :ChangePath |
| echo ____________________________________________________________________ |
| set num1=0 |
| for /l %%i in (1,1,%num%) do ( |
| reg add %RegPath%\Placesbar /v place!num1! /t REG_SZ /d "!str%%i!">nul |
| set /a num1+=1 |
| ) |
| echo.&pause |
| goto MainCOPY |