_SUB SetEdit7
BROW TagFile,*%Edit7%
FIND $%TagFile%=,!ENVI @Edit7=%TagFile%
TIME Timer1,3000,EXEC $%Edit7%
_END
运行后,打开浏览,上面的事件就等于触发了。
但并不执行打开文件。
[ 本帖最后由 nn2nn 于 2008-6-2 12:45 PM 编辑 ]
回复 #243 nn2nn 的帖子
搞错了[ 本帖最后由 nn2nn 于 2008-6-2 12:47 PM 编辑 ] 按回车会闪屏,更改分辨率.
回复 #241 lxl1638 的帖子
PECMD能倒计时。多谢了!PECMD 的计时功能强于WINCMD。
希望能同步更新。
[ 本帖最后由 nn2nn 于 2008-6-3 03:42 PM 编辑 ] 请问WINCMD能否将以往我用cmd所做的功能移植到LIST上
以往我用底下命令来查找*.gho与*.wim建立LIST来选择
set f2=z y x w v u t s r q p o n m l k j i h g f e d c
for %%r in (%f2%) do for %%i in (%%r:\*.gho;%%r:\*.wim) do set /a p+=1&echo !p!:%%i
set /p s=选择一个文件(请输入上列数字):
for %%r in (%f2%) do for %%i in (%%r:\*.gho;%%r:\*.wim) do set /a l+=1&if !l! EQU %s% set k=%%~ni&set ext=%%~xi&set c=%%i
现在想利用WINCMD查找出*.gho与*.wim带出参数到LIST中
试了两天完全没头绪,只好上来求救
[ 本帖最后由 nasai 于 2008-6-13 07:56 PM 编辑 ] 原帖由 nasai 于 2008-6-13 07:04 PM 发表 http://bbs.wuyou.net/images/common/back.gif
请问WINCMD能否将以往我用cmd所做的功能移植到LIST上
以往我用底下命令来查找*.gho与*.wim建立LIST来选择
现在想利用WINCMD查找出*.gho与*.wim带出参数到LIST中
试了两天完全没头绪,只好上来求救
可以用新版 PECMD 中的 FORX 命令实现:
//建立一个文件列表变量
ENVI ListFile=
//查找分区根目录中的*.GHO文件,并添加到ListFile变量中
FORX \*.GHO,GhoFile,0,ENVI ListFile=%ListFile%|%GhoFile%
//查找分区根目录中的*.WIM文件,并添加到ListFile变量中
FORX \*.WIM,WimFile,0,ENVI ListFile=%ListFile%|%WimFile%
//定义窗口
_SUB Windows1,..........................
//这样按 LIST 命令语法生成的 LIST 控件就可以了
LIST List1,L200T360W128H32,%ListFile%,................
_END
感谢回应,原来PECMD也有一样的功能
我在XP SP3用底下代码试验后
_SUB Windows1,W400H200,%WinName%
LABE Label1,L0T0W370H20,%ListFile%
LIST List1,L0T20W100H20,%ListFile%,
_END
ENVI WinName=清单列表
//ENVI ListFile=//事先建立这个变量后,会造成只列出找到的最后一个,所以隐蔽
FORX !\*.gho,GhoFile,0,ENVI ListFile=%ListFile%|%GhoFile%
FORX !\*.wim,WimFile,0,ENVI ListFile=%ListFile%|%WimFile%
CALL @Windows1
没加‘!’会造成出现错误对话框,内容只有一个‘1’
加上‘!’后不再有错误信息,但是查找结果重复了
还有LIST中也多了一个%ListFile%项目
因为%ListFile%事先建立变量会造成只列出找到的最后一个
不事先建立又会变成多了一个%ListFile%项目
实在无法两全其美
另外请求LIST将第一个项目预设为选取
否则像这种方式无法预设第一个项目
[ 本帖最后由 nasai 于 2008-6-14 03:47 PM 编辑 ] 虽然到目前为止还没有做出自己满意的PE,不过好工具,就得收藏,回家好好研究 原帖由 nasai 于 2008-6-14 12:57 PM 发表 http://bbs.wuyou.net/images/common/back.gif
感谢回应,原来PECMD也有一样的功能
我在XP SP3用底下代码试验后
没加‘!’会造成出现错误对话框,内容只有一个‘1’
加上‘!’后不再有错误信息,但是查找结果重复了
42189
还有LIST中也多了一个%ListF ...
"!"前导可能存在BUG,另一个问题可以这样解决:
_SUB RecordFile
IFEX $%FileNum%=0,ENVI ListFile=%SysBackUpFile%!ENVI ListFile=%ListFile%|%SysBackUpFile%
CALC FileNum=%FileNum%+1
_END
_SUB Windows1,W400H200,%WinName%
//........................................................
LIST List1,L0T20W100H20,%ListFile%,
_END
TEAM ENVI FileNum=0|ENVI WinName=清单列表
FORX \*.gho,SysBackUpFile,1,CALL RecordFile
FORX \*.wim,SysBackUpFile,1,CALL RecordFile
CALL @Windows1
RecordFile内的两行也可用一行
_SUB RecordFile
IFEX $%FileNum%=0,ENVI ListFile=%SysBackUpFile%|CALC FileNum=%FileNum%+1!ENVI ListFile=%ListFile%|%SysBackUpFile%
_END
[ 本帖最后由 lxl1638 于 2008-6-14 01:32 PM 编辑 ] 没加‘!’会造成出现错误对话框,内容只有一个‘1’
是本人的粗心,调试时留下的代码,晚上更正。 感谢这么快的即时回覆
关于回覆中的代码,我用了只会得到最早找到的一个值
无法得到全部找到的值
但是我根据这个思维改了一下我原本的代码
现在已经有我要的功能了,再次感谢帮助
这是我现在运作正常的命令
_SUB RecordFile
ENVI ListFile=%ListFile%|%SysBackUpFile%
_END
_SUB Windows1,W400H200,清单列表
LIST List1,L0T20W100H20,%ListFile%,,请选择
_END
ENVI ListFile=请选择
FORX !\*.gho,SysBackUpFile,0,CALL RecordFile
FORX !\*.wim,SysBackUpFile,0,CALL RecordFile
CALL @Windows1 原帖由 nasai 于 2008-6-14 04:40 PM 发表 http://bbs.wuyou.net/images/common/back.gif
感谢这么快的即时回覆
关于回覆中的代码,我用了只会得到最早找到的一个值
无法得到全部找到的值
42203
但是我根据这个思维改了一下我原本的代码
现在已经有我要的功能了,再次感谢帮助
42204
这是我 ...
一时粗心,本人上面发的代码也有问题(思路是对了)。
PECMD晚上更新一下,现有个问题证求你的意见:
LIST、FIND、IFEX 三条命令都使用了相同的分隔符"|",一般情况下问题不大(如你上面),但要用FIND或IFEX命令连接LIST的内容时就出现冲突,打算给LIST增加一个分隔符,你认为用哪个较好? 又改进一下
我要的功能都有了
不知能否再精简?_SUB RecordFile
ENVI ListFile=%ListFile%|%SysBackUpFile%
IFEX $%FileNum%=0,ENVI lf=%SysBackUpFile%|CALC FileNum=%FileNum%+1!ENVI lf=%lf%|%SysBackUpFile%
_END
_SUB Windows1,W400H200,清单列表
EDIT Edit1,L0T0W370H20,%ListFile%
LIST List1,L0T20W100H20,%ListFile%,ENVI @Edit1=%List1%,%lf%
_END
ENVI ListFile=请选择
FORX !\*.gho,SysBackUpFile,0,CALL RecordFile
FORX !\*.wim,SysBackUpFile,0,CALL RecordFile
CALL @Windows1
[ 本帖最后由 nasai 于 2008-6-14 05:14 PM 编辑 ] 一般编程分隔符用最多就是;
其实这符号名称也是分号 BROW的前导符"*"为浏览目录对话框
能否新增一个不要显示文件只显示目录的选项
因为像WIM的imagex不能选到文件只能选目录 原帖由 nasai 于 2008-6-14 05:13 PM 发表 http://bbs.wuyou.net/images/common/back.gif
一般编程分隔符用最多就是;
其实这符号名称也是分号
";"?不行。
PECMD以前也使用过,但注册表有很多地方也使用";"作分隔符,所以PECMD换过一次。
初步打算 FIND、IFEX 命令不再作命令群解释,所有命令群由 TEAM 解释。
要在 FIND、IFEX 使用命令群也可以,格式是:
FIND <条件>,TEAM 命令1|命令2|命令3.... !TEAM 命令a|命令b|命令c....
IFEX <条件>,TEAM 命令1|命令2|命令3.... !TEAM 命令a|命令b|命令c....
这样在 FIND、IFEX 命令内就不会被分隔符"|"分割。即不再支持:
FIND <条件>,命令1|命令2|命令3.... !命令a|命令b|命令c....
IFEX <条件>,命令1|命令2|命令3.... !命令a|命令b|命令c....
但仍支持:
FIND <条件>,命令1!命令a
IFEX <条件>,命令1!命令a
[ 本帖最后由 lxl1638 于 2008-6-14 05:53 PM 编辑 ] lxl1638大虾:
试过用“管道”方式,不用生成明文吗?
(生成的BAT文件内容,放在控制台的输入管道,类似的RUNDOSINMEMO就是这样做)
参考:http://www.2ccc.com/article.asp?articleid=2029
[ 本帖最后由 nn2nn 于 2008-6-16 10:05 AM 编辑 ] 好久没回来了,很想念WINCMD了,最近没有搞PE,在搞PHP调试环境。
又一个软件叫PHPnow,很好用,就是没有图形界面,很想用WINCMD稿定
界面问题,可惜啊,CMD水平有限。
Init.cmd
@echo off
rem -- http://PHPnow.org
rem -- By Yinz ( MSN / QQ / Email : Cwood@qq.com )
setlocal enableextensions
call Pn\config.cmd
if "%pause%"=="" exit /b
if not "%1"=="" (
call :%1 %1
goto :eof
)
prompt -$g
title 初始化 PHPnow %pn_ver% - Apache %htd_ver% + PHP + MySQL
echo ____________________________________________________________
echo^| ^|
echo^| ######PHPnow.org-绿色免费 PHP 环境套件###### ^|
echo^|____________________________________________________________^|
echo.
:chk_htd_port
%pl% chkport(%htd_port%);
if %errorlevel%==0 goto chk_my_port
:L_4
echo.
echo 1 - 修改 Apache^(http^) 端口
echo 2 - 重试 ^(端口已被释放/程序已中止^)
echo.
set /p input=-^> 请选择:
if "%input%"=="1" (
call PnCp.cmd chg_port nors
set pn_ver=
call Pn\config.cmd
goto chk_htd_port
)
if "%input%"=="2" call goto chk_htd_port
goto L_4
:chk_my_port
%pl% chkport(%my_port%);
if %errorlevel%==0 goto init
:L_5
echo.
echo 1 - 修改 MySQL 端口
echo 2 - 重试 ^(端口已被释放/程序已中止^)
echo.
set input=
set /p input=-^> 请选择:
if "%input%"=="1" goto L_5_1
if "%input%"=="2" goto chk_my_port
goto L_5
:L_5_1
set /p nport=-^> 输入新端口^(1-65535^):
if "%nport%"=="" goto L_5
if "%nport%"=="%htd_port%" goto L_5
%pl% $p='%nport%';$p=abs($p);if(is_int($p)^&^&$p^>0^&^&$p^<65536)exit(0);else exit(1); || goto L_5
set my_port=%nport%
goto chk_my_port
:init
echo ____________________________________________________________
echo^| ^|
echo^| 开始文件处理 ... ^|
echo.
rem 建立目录
if not exist %apadir%\conf\extra md %apadir%\conf\extra
if not exist %apadir%\logs md %apadir%\logs
if "%htd_exe%"=="apache.exe" goto L_1
if "%htd_exe%"=="httpd.exe" goto L_2
goto end
:L_1
rem 初始配置 Apache 2.0
if not exist %apadir%\conf\magic copy %apadir%\conf\magic.default %apadir%\conf\magic /y
if not exist %apadir%\conf\mime.types copy %apadir%\conf\mime.types.default %apadir%\conf\mime.types /y
if exist %apadir%\conf\httpd-win.conf (
%pl% require_once './Pn/init.phpc'; init_apache_2_0_conf(^);
) else (
type Pn\conf.default\httpd-2_0.conf>%apadir%\conf\httpd.conf
%pl% chg_port('%nport%'); || %pause% && goto end
)
goto L_3
:L_2
rem 初始配置 Apache 2.2
if not exist %apadir%\conf\magic copy %apadir%\conf\original\magic %apadir%\conf /y
if not exist %apadir%\conf\mime.types copy %apadir%\conf\original\mime.types %apadir%\conf /y
if exist %apadir%\conf\original\httpd.conf.in (
%pl% require_once './Pn/init.phpc'; init_apache_2_2_conf(^);
) else (
type Pn\conf.default\httpd-2_2.conf>%apadir%\conf\httpd.conf
%pl% chg_port('%nport%'); || %pause% && goto end
copy Pn\conf.default\httpd-autoindex.conf %apadir%\conf\extra /y
)
:L_3
if not exist %vh% copy Pn\conf.default\httpd-vhosts.conf %vh%
if not exist htdocs\index.php copy Pn\pn_info.ph_ htdocs\index.php /y
rem 复制 DLL
copy %mysqldir%\bin\libmySQL.dll %phpdir% /y
copy %phpdir%\libmySQL.dll %apadir%\bin /y
copy %phpdir%\php5ts.dll %apadir%\bin /y
copy %phpdir%\libmhash.dll %apadir%\bin /y
copy %phpdir%\libmcrypt.dll %apadir%\bin /y
copy %phpdir%\libeay32.dll %apadir%\bin /y
copy %phpdir%\ssleay32.dll %apadir%\bin /y
rem 初始配置 php-SAPI.ini
%pl% require_once './Pn/init.phpc'; init_phpini();
rem 初始配置 my.ini
%pl% bakfile('%mysqldir%\my.ini');
copy %mysqldir%\my-medium.ini %mysqldir%\my.ini /y
%pl% conf(`%mysqldir%\my.ini`, `(port\s*=)\s*\d+`, `$1 %my_port%`);
%pl% conf(`%mysqldir%\my.ini`, `(myisam_sort_buffer_size\s*=.*\r\n)`, `$1max_connections = 1000\r\n`);
%pl% conf(`%mysqldir%\my.ini`, `(table_cache\s*=.*\r\n)`, ``);
%pl% conf(`%mysqldir%\my.ini`, `(max_connections\s*=.*\r\n)`, `$1table_cache = 256`);
%pl% conf(`%mysqldir%\my.ini`, `(thread_cache_size\s*=.*\r\n)`, ``);
%pl% conf(`%mysqldir%\my.ini`, `(table_cache\s*=.*\r\n)`, `$1thread_cache_size = 8\r\n`);
rem 初始配置 phpMyAdmin
set pma=htdocs\phpMyAdmin
%pl% bakfile('%pma%\config.inc.php');
copy %pma%\config.sample.inc.php %pma%\config.inc.php /y
%pl% conf(`%pma%/config.inc.php`, `\\\$cfg\['blowfish_secret'\] = '.*';`, `\$cfg['blowfish_secret'] = 'PHPnow-`.md5('%COMPUTERNAME%%RANDOM%').`';`);
set pma_sc=htdocs\phpMyAdmin\lang\chinese_simplified-utf-8.inc.php
%pl% bakfile('%pma_sc%');
copy Pn\pma-sc.ph_ %pma_sc% /y
echo.
echo^| 文件处理完成; ^|
echo^|____________________________________________________________^|
echo.
if "%1"=="init" goto :eof
:apache_install
echo ____________________________________________________________
echo^| ^|
echo^| 正在安装 Apache ... ^|
echo.
cd %apadir%
bin\%htd_exe% -k install -n %htd_svc%
if errorlevel 2 (
echo.
echo^| 安装服务 [ %htd_svc% ] 失败. 可能原因如下: ^|
echo^| 1. 服务名已存在, 请卸载或使用不同的服务名. ^|
echo^| 2. 非管理员权限, 不能操作 Windows NT 服务. ^|
echo^|____________________________________________________________^|
echo.
cd ..
%pause%
goto end
)
if errorlevel 1 (
echo.
echo^| 安装 Apache 服务失败! ^|
echo^| 上面出现的信息是问题的原因. ^|
echo^|____________________________________________________________^|
echo.
bin\%htd_exe% -k uninstall -n %htd_svc%
cd ..
%pause%
goto end
)
:apache_start
echo.
echo^| 正在启动 Apache ... ^|
bin\%htd_exe% -k start -n %htd_svc% && goto apache_done
cd ..
echo^| Apache 启动失败! ^|
echo^| 上面出现的信息是问题的原因. ^|
echo^|____________________________________________________________^|
echo.
%pause%
goto end
:apache_done
cd ..
if exist %cmdsdir%\*.cm_ ren %cmdsdir%\*.cm_ *.cmd
echo.
echo^| 启动 Apache 完成; ^|
echo^|____________________________________________________________^|
echo.
:mysql_chk_pid
echo ____________________________________________________________
echo^| ^|
echo^| 正在启动 MySQL 5.0 ... ^|
echo.
:mysql_stop
net stop %my_svc%>nul 2>nul
%mysqldir%\bin\mysqld-nt --remove %my_svc%>nul 2>nul
:mysql_start
%mysqldir%\bin\mysqld-nt --install %my_svc% --defaults-file="%CD%\%mysqldir%\my.ini"
net start %my_svc% || %pause%
echo^| 启动 MySQL 5.0 完成; ^|
echo^|____________________________________________________________^|
echo.
set initpwd=phpnow
rem 测试 MySQL
:mysql_test
%pl% tmysql(%my_port%, `%initpwd%`); && goto mysql_setpwd
if %errorlevel%==1045 (
echo ____________________________________________________________
echo^| ^|
echo MySQL root 初始密码不正确. 复位 MySQL root 密码.
echo^|____________________________________________________________^|
echo.
if exist PnCp.cmd call PnCp.cmd reset_mypwd && goto done
if exist %cmdsdir%\PnCp.cmd call %cmdsdir%\PnCp.cmd reset_mypwd && goto done
)
if %errorlevel%==2003 (
echo ____________________________________________________________
echo^| ^|
echo MySQL^(port:%my_port%^) 连接失败.
echo 可能 MySQL 没有启动成功. 或者受防火墙限制.
echo^|____________________________________________________________^|
echo.
)
goto done
rem 修改 MySQL root 密码
:mysql_setpwd
echo ____________________________________________________________
echo^| ^|
echo^| 现在为 MySQL root 设置密码. 重要! 请切记! ^|
echo^|____________________________________________________________^|
set /P my_newpwd= -^> 设置 root 密码:
echo.
if "%my_newpwd%"=="" goto mysql_setpwd
%mysqldir%\bin\mysqladmin -uroot -p%initpwd% password "%my_newpwd%"
if errorlevel 1 %pause% && goto done
echo ____________________________________________________________
echo^| ^|
echo MySQL root 密码已设为 "%my_newpwd%" , 请切记!
echo^|____________________________________________________________^|
echo.
:done
title 全部完成 - PHPnow.org
echo ____________________________________________________________
echo^| ^|
echo^| 全部完成! ^|
echo^|____________________________________________________________^|
echo.
%pause%
start http://127.0.0.1:%htd_port%
if exist Init.cmd PnCp.cmd x ren Init.cmd Init.cm_
:end
prompt PnCp.cmd
@echo off
rem -- http://PHPnow.org
rem -- By Yinz ( MSN / QQ / Email : Cwood@qq.com )
setlocal enableextensions
if exist Pn\Config.cmd pushd . & goto cfg
if exist ..\Pn\Config.cmd pushd .. & goto cfg
goto :eof
:cfg
call Pn\Config.cmd
if "%pause%"=="" exit /b
if "%1"=="x" if not "%2"=="" cmd /c "%2 %3 %4 %5 %6" & goto :eof
if not "%1"=="" (
call :%1 %2
goto :eof
)
prompt -$g
title PHPnow %pn_ver% 控制面板 (Apache %htd_ver%)
goto menu
:restart_apache
if not exist %apadir%\logs\httpd.pid goto :eof
echo.
echo正在重启 Apache ...
pushd %apadir%
bin\%htd_exe% -k restart -n %htd_svc% || set errno=1
popd
if "%errno%"=="1" %pause%
goto :eof
:execmd
if exist %1 call %1 && goto :eof
if exist %cmdsdir%\%1 call %cmdsdir%\%1 && goto :eof
echo # 找不到 %1 !
%pause%
goto :eof
:menu
echo ______________________________________________________________
echo^| ^|
echo^| PHPnow-绿色 PHP + MySQL 套件-控制面板 ^|
echo^| ^|
echo^| 0 - vhs 添加 虚拟主机 10 - 设置 代理虚拟主机 ^|
echo^| 1 - vhs 删除 虚拟主机 11 - 取消 代理虚拟主机 ^|
echo^| 2 - vhs 修改 虚拟主机 12 - 复位 MySQL root 密码 ^|
echo^| 3 - 开启 eAccelerator 13 - 更改 Apache 端口 ^|
echo^| 4 - 禁用 eAccelerator * 14 - 导出 MySQL 数据库 ^|
echo^| 5 - 开启 网站目录索引 15 - 导入 MySQL 数据库 ^|
echo^| 6 - 禁用 网站目录索引 * 16 - 端口使用状态检测 ^|
echo^| 7 - 日志分卷(会有多个进程) 17 - ----------------- ^|
echo^| 8 - 取消 日志分卷 * 18 - ----------------- ^|
echo^| 9 - 设置 error_reporting 19 - Pn 目录命令提示符 ^|
echo^| (带 * 号的为默认选项) ^|
echo^| ^|
echo^| 20 - Start.cmd 30 - Stop.cmd ^|
echo^| 21 - Apa_Start.cmd 31 - Apa_Stop.cmd ^|
echo^| 22 - My_Start.cmd 32 - My_Stop.cmd ^|
echo^| 23 - Apa_Restart.cmd 33 - 强行终止进程并卸载 ^|
echo^|______________________________________________________________^|
set /p input=-^> 请选择:
cls
if "%input%"=="20" call :execmd Start.cmd
if "%input%"=="21" call :execmd Apa_Start.cmd
if "%input%"=="22" call :execmd My_Start.cmd
if "%input%"=="23" call :execmd Apa_Restart.cmd
if "%input%"=="30" call :execmd Stop.cmd
if "%input%"=="31" call :execmd Apa_Stop.cmd
if "%input%"=="32" call :execmd My_Stop.cmd
echo.
if "%input%"=="0" goto add_vhost
if "%input%"=="1" goto del_vhost
if "%input%"=="2" goto mod_vhost
if "%input%"=="3" goto en_ea
if "%input%"=="4" goto dis_ea
if "%input%"=="5" goto en_index
if "%input%"=="6" goto dis_index
if "%input%"=="7" goto pipelog
if "%input%"=="8" goto unpipelog
if "%input%"=="9" goto err_report
if "%input%"=="10" goto set_proxy
if "%input%"=="11" goto un_proxy
if "%input%"=="12" goto reset_mypwd
if "%input%"=="13" goto chg_port
if "%input%"=="14" goto my_dump
if "%input%"=="15" goto my_import
if "%input%"=="16" goto chkport
if "%input%"=="17" goto --
if "%input%"=="18" goto --
if "%input%"=="19" cmd /K echo# 当前目录 [ %CD% ]
if "%input%"=="33" goto fstop
goto end
:chg_port
set /p nport=-^> 输入新端口(1-65535):
if "%nport%"=="" goto end
%pl% $p='%nport%';$p=abs($p);if(is_int($p)^&^&$p^>0^&^&$p^<65536)exit(0);else exit(1); || goto end
%pl% chg_port('%nport%'); || %pause% && goto end
if "%1"=="nors" goto end
call :restart_apache
goto end
:add_vhost
echo# 现有虚拟主机列表 #
%pl% showvhs(); || %pause% && goto end
echo.
echo[ 主机名用于识别不同虚拟主机. 例 abc.com 或 www.abc.com ]
set /p hname=-^> 添加主机名:
if "%hname%"=="" goto end
echo.
echo[ 别名用于绑定主机名外的多个域名. 如 www.abc.com 或 *.abc.com(泛解析)
echo 多个请用空格间开, 如 www.abc.com 51lvse.cn *.phpnow.org ]
set /p alias=-^> 主机别名(可选):
:add_vhost_1
echo.
echo[ 指定网站目录. 留空则默认为 vhosts\%hname%]
set htdocs=
set /p htdocs=-^> 网站目录(可选):
if "%htdocs%"=="" goto add_vhost_2
%pl% exit(strpos('%htdocs%#',':')); && ( echo# 请使用绝对路径。如 D:\www & %pause% & goto add_vhost_1 )
if exist %htdocs% goto add_vhost_2
md %htdocs%>nul 2>nul || ( echo# 指定目录不存在。自动创建失败!& %pause% & goto add_vhost_1 )
:add_vhost_2
echo.
echo[ 如果分配此主机给其他用户, 并限制其权限, 请输入 "y";
echo 否则, 请输入 "n". 默认 Y ]
set /p p=-^> 限制虚拟主机权限? (Y/n):
%pl% addvhost('%hname%', '%htdocs% ', %htd_port%, '%alias%', '%p%'); || %pause% && goto end
call :restart_apache
goto end
:del_vhost
echo# 现有虚拟主机列表 #
%pl% showvhs(); || %pause% && goto end
echo.
set /p hname=-^> 要删除的主机名或序号:
if "%hname%"=="" goto end
%pl% delvhost('%hname%'); || %pause% && goto end
call :restart_apache
goto end
:mod_vhost
echo# 现有虚拟主机列表 #
%pl% showvhs(); || %pause% && goto end
echo.
set /p hname=-^> 要修改的主机名或序号:
if "%hname%"=="" goto end
echo.
echo[ 请输入新的主机别名, 原有数据将被覆盖! ]
echo[ 可使用 + 代替原有数据. 要在原基础上添加, 输入 +phpnow.org ]
set /p alias=-^> 主机别名:
if "%alias%"=="" goto end
:mod_vhost_1
echo.
echo[ 将 %hname% 主机别名改为 "%alias%" ]
echo.
set /p sure=-^> 确认? (y/n)
if /i "%sure%"=="n" goto end
if /i "%sure%"=="y" goto mod_vhost_2
goto mod_vhost_1
:mod_vhost_2
%pl% modvhost('%hname%', '%alias%'); || %pause% && goto end
call :restart_apache
goto end
:set_proxy
echo[ 设置 Apache 虚拟主机代理其他端口, 实现与其他 http 服务共用 80 端口 ]
echo.
echo# 现有虚拟主机列表 #
%pl% showvhs(); || %pause% && goto end
echo.
echo[ 添加新的主机名. 如 abc.com 或 bbs.abc.com ]
set /p hname=-^> 主机名:
if "%hname%"=="" goto end
echo.
echo[ 绑定其他域名. 如 www.abc.com 或 *.abc.com(泛解析); 多个请用空格隔开 ]
set /p alias=-^> 主机别名(可选):
if "%alias%"=="" set alias=*.%hname%
echo.
echo[ 例: localhost:8080,192.168.0.100 或 google.com]
echo[ 跳过将默认为: localhost:8080 ]
set /p pryto=-^> 代理目标:
if "%pryto%"=="" set pryto=localhost:8080
%pl% conf($htdcf, '^#(Load.*proxy_mod.*)$', '$1'); conf($htdcf, '^#(Load.*proxy_http.*)$', '$1'); || %pause% && goto end
echo.>>%vh%
echo ^<VirtualHost *^>>>%vh%
echo ServerName %hname%:%htd_port%>>%vh%
echo ServerAlias %alias%>>%vh%
echo ProxyPass / http://%pryto%/>>%vh%
echo ProxyPassReverse / http://%pryto%/>>%vh%
echo ^</VirtualHost^>>>%vh%
call :restart_apache
goto end
:un_proxy
echo[ 继续将删除所有代理主机记录! ]
echo.
set /p sure=-^> 确认? (y/n)
if /i "%sure%"=="n" goto end
if /i "%sure%"=="y" goto un_proxy_1
goto un_proxy
:un_proxy_1
%pl% conf($htdcf,'^(Load.*proxy_mod.*)$', '#$1');conf($htdcf, '^(Load.*proxy_http.*)$', '#$1'); || %pause% && goto end
%pl% "$s=rfile($vhcf);$s=regrpl('\r\n<VirtualHost \*>[^<]*ProxyPass [^<]*<\/VirtualHost>\r\n','',$s);wfile($vhcf,$s);" || %pause% && goto end
call :restart_apache
goto end
:en_ea
if not exist %phpdir%\ext\eAccelerator*.dll if exist Pn\eAccelerator*.dll (
copy Pn\eAccelerator*.dll %phpdir%\ext /y>nul
) else ( echo # eAccelerator dll 没有找到 & %pause% & goto end )
for /f %%i in ('dir /b /o %phpdir%\ext\eAccelerator*.dll') do set ea_dll=%%i
%pl% conf(`$phpdir\php-apache2handler.ini`, '^[;]*(zend_extension_ts=).*eAccelerator.*\r?$', `$1\`..\..\\$phpdir\ext\%ea_dll%\``); || %pause% && goto end
call :restart_apache
goto end
:dis_ea
%pl% conf(`$phpdir\php-apache2handler.ini`, '^(zend_extension_ts=.*eAccelerator.*\r?$)', ';;$1'); || %pause% && goto end
call :restart_apache
goto end
:en_index
%pl% "$s=rfile($htdcf); $s=regrpl('^##(Load.*autoindex.*\.so)', '$1', $s); $s=regrpl('^##?(Inc.*autoindex.*)', '$1', $s); $s=regrpl('Options -Indexes', 'Options Indexes', $s); wfile($htdcf, $s);
%pl% conf($vhcf, 'Options -Indexes', 'Options Indexes'); || %pause% && goto end
call :restart_apache
goto end
:dis_index
%pl% "$s=rfile($htdcf); $s=regrpl('^(Load.*autoindex.*\.so)', '##$1', $s); $s=regrpl('^(Inc.*autoindex.*)', '##$1', $s); $s=regrpl('Options Indexes', 'Options -Indexes', $s); wfile($htdcf, $s);
%pl% conf($vhcf, 'Options Indexes', 'Options -Indexes'); || %pause% && goto end
call :restart_apache
goto end
:pipelog
%pl% pipelog(1);
call :restart_apache
goto end
:unpipelog
%pl% pipelog(0);
call :restart_apache
goto end
:err_report
echo ______________________________________________________________
echo^| ^|
echo^| 设置 php error_reporting (错误报告) 选项 ^|
echo^| ^|
echo^| 0 - E_ALL ^& ~E_NOTICE ^& ~E_WARNING [ 默认; 推荐 ] ^|
echo^| 1 - E_ALL [ 编程模式 ] ^|
echo^|______________________________________________________________^|
set /p input=-^> 请选择:
if "%input%"=="0" %pl% conf(`$phpdir\php-apache2handler.ini`, '^^(error_reporting =) .+(\r?)', '$1 E_ALL ^& ~E_NOTICE ^& ~E_WARNING$2');
if "%input%"=="1" %pl% conf(`$phpdir\php-apache2handler.ini`, '^^(error_reporting =) .+(\r?)', '$1 E_ALL$2');
call :restart_apache
goto end
:reset_mypwd
set /p newpwd=-^> 重设 root 密码:
if "%newpwd%"=="" goto reset_mypwd
echo.
set tmpsql=%SystemRoot%\Temp\%RANDOM%.sql
echo SET PASSWORD FOR 'root'@'localhost' = PASSWORD('%newpwd%');>%tmpsql%
if exist %mysqldir%\data\%COMPUTERNAME%.pid net stop %my_svc%
set myini=%CD%\%mysqldir%\my.ini
start /b %mysqldir%\bin\mysqld-nt --defaults-file="%myini%" --init-file=%tmpsql%
%mysqldir%\bin\mysqladmin.exe shutdown -uroot -p"%newpwd%"
echo等待 MySQL 结束...
echo.
%pl% while(@file_exists('%mysqldir%\data\%COMPUTERNAME%.pid')) usleep(50000);
echo.>%tmpsql%
del %tmpsql% /Q
net start %my_svc% || %pause%
goto end
:my_dump
set /p dbn=-^> 导出数据库名:
if "%dbn%"=="" goto my_dump
:my_dump_u
set /p u=-^> 用户名:
if "%u%"=="" goto my_dump_u
set /p p=-^> 密码:
:my_dump_fn
set /p fn=-^> 导出文件名:
if "%fn%"=="" goto my_dump_fn
%mysqldir%\bin\mysqldump.exe -u%u% -p%p% %dbn%>%fn% || %pause% && del %fn% /Q
goto end
:my_import
set /p dbn=-^> 导入数据库名(请手动创建空的):
if "%dbn%"=="" goto my_import
:my_import_u
set /p u=-^> 用户名:
if "%u%"=="" goto my_import_u
set /p p=-^> 密码:
:my_import_fn
set /p fn=-^> 导入文件名:
if "%fn%"=="" goto my_import_fn
%mysqldir%\bin\mysql.exe -u%u% -p%p% -D%dbn%<%fn% || %pause%
goto end
:chkport
%pl% chkport(%htd_port%);
if not errorlevel 1 echo 指定 httpd 端口 %htd_port% 没有被任何进程使用。
%pl% chkport(%my_port%);
if not errorlevel 1 echo 指定 MySQL 端口 %my_port% 没有被任何进程使用。
echo.
%pause% & goto end
:fstop
taskkill /fi "SERVICES eq %htd_svc%" /f /t
taskkill /fi "SERVICES eq %my_svc%" /f /t
net stop %my_svc%>nul 2>nul
net stop %htd_svc%>nul 2>nul
%apadir%\bin\%htd_exe% -k uninstall -n %htd_svc%>nul 2>nul
%mysqldir%\bin\mysqld-nt.exe --remove %my_svc%>nul 2>nul
del %mysqldir%\data\%COMPUTERNAME%.pid %apadir%\logs\httpd.pid /q>nul 2>nul
%pause%
goto end
:end
prompt
popd 谁有兴趣? 可以试试。
[ 本帖最后由 spycolin 于 2008-8-18 21:22 编辑 ] 经常来看一下
不知不觉就提高了 真是强人!!!!!!!!!!!! 原帖由 nn2nn 于 2008-6-16 10:01 发表 http://bbs.wuyou.net/images/common/back.gif
lxl1638大虾:
试过用“管道”方式,不用生成明文吗?
(生成的BAT文件内容,放在控制台的输入管道,类似的RUNDOSINMEMO就是这样做)
参考:http://www.2ccc.com/article.asp?articleid=2029
原理可行,但要实现CMD的全功能很难搞。
很多CMD批处理都修改了CMD窗口的颜色和字体,
"管道"方式处理起来很复杂,执行效率也很低,代码很多,搞成的EXE也很大。 原帖由 spycolin 于 2008-8-18 21:19 发表 http://bbs.wuyou.net/images/common/back.gif
PnCp.cmd
@echo off
rem -- http://PHPnow.org
rem -- By Yinz ( MSN / QQ / Email : Cwood@qq.com )
setlocal enableextensions
if exist Pn\Config.cmd pushd . & goto cfg
if exist ..\Pn\Confi ...
看不会,太太太了。
回复 #266 lxl1638 的帖子
老大,WinCMD不同于PECMD, 一般使用于正常的系统中,是否可考虑下:┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ WinCMD - 命令解释程序,内置以下环境变量的支持 ┃
┣━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━┫
┃CurDir 配置文件目录│Desktop 系统桌面目录│Favorites 收藏夹目录┃
┃Personal 我的文档目录│Programs 程序菜单目录│SendTo 发送到目录┃
┃StartMenu 开始菜单目录│Startup 启动菜单目录│QuickLaunch 快速启动栏┃
┗━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━┛
这几个变量(除第一个)应该使用于正常系统中而不是PE中? 原帖由 玄天 于 2008-8-27 23:37 发表 http://bbs.wuyou.net/images/common/back.gif
老大,WinCMD不同于PECMD, 一般使用于正常的系统中,是否可考虑下:
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ WinCMD - 命令解释程序,内置以下环境变量的支持 ┃
┣━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━┫
┃CurDir 配置文件目录│Desktop 系统桌面目录│Favorites 收藏夹目录┃
┃Personal 我的文档目录│Programs 程序菜单目录│SendTo 发送到目录┃
┃StartMenu 开始菜单目录│Startup 启动菜单目录│QuickLaunch 快速启动栏┃
┗━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━┛
这几个变量(除第一个)应该使用于正常系统中而不是PE中?
这些变量仅仅是PECMD或WinCMD自己的,除非你将它们设置成系统级环境变量,否则它们不会影响正常系统的环境变量。
除第一个外,其它的都是从注册表
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
中读取出来的,在正常系统中你用CMD的SET命令列举时很多是列不出来的。
你的意思本人明白,就是要兼容正常系统的变量名。
但XCMD、PECMD、WinCMD一开始就使用了这些变量名了,只能二选一:
1、兼容PECMD,方便PECMD、WinCMD配置文件的移植,也无需修改代码,但有些与CMD的变量名不兼容;
2、兼容CMD,方便CMD、BAT批处理文件的移植,但要修改代码,不方便PECMD配置文件的移植;
本人选择了2,你可以这样处理,如:
ENVI ProgramFiles=%Programs%
回复 #268 lxl1638 的帖子
一直用pecmd,因为新的wincmd可以内嵌脚本,所以正常系统中才用它(PE中已经有pecmd了,在用它实在多于)看来只好多写几个符号咯:) 哦,还有个问题:
就是在vista系统中内嵌wincmd脚本,运行是基本上都会出错,有时是双击后出错,有时是执行完后出错.... 原帖由 ynxmaifmsguxmft 于 2008-3-26 09:00 发表 http://bbs.wuyou.net/images/common/back.gif
另外wincmd对cmd文件的支持好像不是太好。假如,我在上一级目录建立程序启动菜单,在下一级文件夹里有个批处理文件1a.cmd,一个可执行文件2b.exe,在1a.cmd中输入start 2b.exe,运行1a.cmd会提示找不到2b ...
这个问题我在用WinRAR做安装包时也有这个问题,包含在下级文件夹下的.exe也是无法找到,除非在1a.cmd描述2b.exe的时候在前面补上文件夹名称,如“folder1\2b.exe”。