无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: lxl1638

WinCMD-V3.9.2010.0618版

  [复制链接]
 楼主| 发表于 2008-6-2 12:20:37 | 显示全部楼层
原帖由 nn2nn 于 2008-6-2 11:50 AM 发表
能不能倒计时,执行一次的功能。


你到 FTP2 下载本人近期上传的 PECMD.EXE 演示用 WinPE,
启动到桌面后有个 WCS 脚本(已注册了文件关联和图标关联),
你执行一下看看能否达到你要的功能,或者有什么要完善的?

在 PECMD.EXE 主帖里有关于这个 WinPE 的说明。
回复

使用道具 举报

发表于 2008-6-2 12:22:58 | 显示全部楼层
好,我看看
回复

使用道具 举报

发表于 2008-6-2 12:42:00 | 显示全部楼层
我修改一下(DEMO.WCS)

_SUB SetEdit7
  BROW TagFile,*%Edit7%
  FIND $%TagFile%=,!ENVI @Edit7=%TagFile%
  TIME Timer1,3000,EXEC $%Edit7%
_END

运行后,打开浏览,上面的事件就等于触发了。
但并不执行打开文件。

[ 本帖最后由 nn2nn 于 2008-6-2 12:45 PM 编辑 ]
回复

使用道具 举报

发表于 2008-6-2 12:45:30 | 显示全部楼层

回复 #243 nn2nn 的帖子

搞错了                    

[ 本帖最后由 nn2nn 于 2008-6-2 12:47 PM 编辑 ]
回复

使用道具 举报

发表于 2008-6-2 15:27:06 | 显示全部楼层
按回车会闪屏,更改分辨率.
回复

使用道具 举报

发表于 2008-6-3 15:34:29 | 显示全部楼层

回复 #241 lxl1638 的帖子

PECMD能倒计时。多谢了!

PECMD 的计时功能强于WINCMD。
希望能同步更新。

[ 本帖最后由 nn2nn 于 2008-6-3 03:42 PM 编辑 ]
回复

使用道具 举报

发表于 2008-6-13 19:04:37 | 显示全部楼层
请问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 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2008-6-13 20:59:20 | 显示全部楼层
原帖由 nasai 于 2008-6-13 07:04 PM 发表
请问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

评分

参与人数 1无忧币 +10 收起 理由
nasai + 10 精品文章

查看全部评分

回复

使用道具 举报

发表于 2008-6-14 12:57:47 | 显示全部楼层
感谢回应,原来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’
加上‘!’后不再有错误信息,但是查找结果重复了
2008-06-14_125145.jpg
还有LIST中也多了一个%ListFile%项目
因为%ListFile%事先建立变量会造成只列出找到的最后一个
不事先建立又会变成多了一个%ListFile%项目
实在无法两全其美

另外请求LIST将第一个项目预设为选取
否则像这种方式无法预设第一个项目

[ 本帖最后由 nasai 于 2008-6-14 03:47 PM 编辑 ]
回复

使用道具 举报

发表于 2008-6-14 13:12:17 | 显示全部楼层
虽然到目前为止还没有做出自己满意的PE,不过好工具,就得收藏,回家好好研究
回复

使用道具 举报

 楼主| 发表于 2008-6-14 13:29:13 | 显示全部楼层
原帖由 nasai 于 2008-6-14 12:57 PM 发表
感谢回应,原来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 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2008-6-14 13:42:21 | 显示全部楼层
没加‘!’会造成出现错误对话框,内容只有一个‘1’

是本人的粗心,调试时留下的代码,晚上更正。
回复

使用道具 举报

发表于 2008-6-14 16:40:37 | 显示全部楼层
感谢这么快的即时回覆
关于回覆中的代码,我用了只会得到最早找到的一个值
无法得到全部找到的值
2008-06-14_163900.jpg

但是我根据这个思维改了一下我原本的代码
现在已经有我要的功能了,再次感谢帮助
2008-06-14_163849.jpg

这是我现在运作正常的命令
  1. _SUB RecordFile
  2. ENVI ListFile=%ListFile%|%SysBackUpFile%
  3. _END

  4. _SUB Windows1,W400H200,清单列表
  5. LIST List1,L0T20W100H20,%ListFile%,,请选择
  6. _END

  7. ENVI ListFile=请选择
  8. FORX !\*.gho,SysBackUpFile,0,CALL RecordFile
  9. FORX !\*.wim,SysBackUpFile,0,CALL RecordFile
  10. CALL @Windows1
复制代码
回复

使用道具 举报

 楼主| 发表于 2008-6-14 17:03:07 | 显示全部楼层
原帖由 nasai 于 2008-6-14 04:40 PM 发表
感谢这么快的即时回覆
关于回覆中的代码,我用了只会得到最早找到的一个值
无法得到全部找到的值
42203

但是我根据这个思维改了一下我原本的代码
现在已经有我要的功能了,再次感谢帮助
42204

这是我 ...



一时粗心,本人上面发的代码也有问题(思路是对了)。
PECMD晚上更新一下,现有个问题证求你的意见:
LIST、FIND、IFEX 三条命令都使用了相同的分隔符"|",一般情况下问题不大(如你上面),但要用FIND或IFEX命令连接LIST的内容时就出现冲突,打算给LIST增加一个分隔符,你认为用哪个较好?
回复

使用道具 举报

发表于 2008-6-14 17:08:53 | 显示全部楼层
又改进一下
我要的功能都有了
不知能否再精简?
  1. _SUB RecordFile
  2. ENVI ListFile=%ListFile%|%SysBackUpFile%
  3. IFEX $%FileNum%=0,ENVI lf=%SysBackUpFile%|CALC FileNum=%FileNum%+1!ENVI lf=%lf%|%SysBackUpFile%
  4. _END

  5. _SUB Windows1,W400H200,清单列表
  6. EDIT Edit1,L0T0W370H20,%ListFile%
  7. LIST List1,L0T20W100H20,%ListFile%,ENVI @Edit1=%List1%,%lf%
  8. _END

  9. ENVI ListFile=请选择
  10. FORX !\*.gho,SysBackUpFile,0,CALL RecordFile
  11. FORX !\*.wim,SysBackUpFile,0,CALL RecordFile
  12. CALL @Windows1
复制代码

[ 本帖最后由 nasai 于 2008-6-14 05:14 PM 编辑 ]
回复

使用道具 举报

发表于 2008-6-14 17:13:00 | 显示全部楼层
一般编程分隔符用最多就是;
其实这符号名称也是分号
回复

使用道具 举报

发表于 2008-6-14 17:48:30 | 显示全部楼层
BROW的前导符"*"为浏览目录对话框
能否新增一个不要显示文件只显示目录的选项
因为像WIM的imagex不能选到文件只能选目录
回复

使用道具 举报

 楼主| 发表于 2008-6-14 17:51:59 | 显示全部楼层
原帖由 nasai 于 2008-6-14 05:13 PM 发表
一般编程分隔符用最多就是;
其实这符号名称也是分号


";"?不行。
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 编辑 ]
回复

使用道具 举报

发表于 2008-6-16 10:01:46 | 显示全部楼层
lxl1638大虾:

试过用“管道”方式,不用生成明文吗?

(生成的BAT文件内容,放在控制台的输入管道,类似的RUNDOSINMEMO就是这样做)
参考:http://www.2ccc.com/article.asp?articleid=2029

[ 本帖最后由 nn2nn 于 2008-6-16 10:05 AM 编辑 ]
回复

使用道具 举报

发表于 2008-8-18 21:18:46 | 显示全部楼层
好久没回来了,很想念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
回复

使用道具 举报

发表于 2008-8-18 21:19:55 | 显示全部楼层
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
回复

使用道具 举报

发表于 2008-8-18 21:21:14 | 显示全部楼层
谁有兴趣? 可以试试。 CMD.rar (5.87 KB, 下载次数: 107)
回复

使用道具 举报

发表于 2008-8-21 17:19:36 | 显示全部楼层
经常来看一下
不知不觉就提高了
回复

使用道具 举报

发表于 2008-8-21 20:56:40 | 显示全部楼层
真是强人!!!!!!!!!!!!
回复

使用道具 举报

 楼主| 发表于 2008-8-21 21:30:28 | 显示全部楼层
原帖由 nn2nn 于 2008-6-16 10:01 发表
lxl1638大虾:

试过用“管道”方式,不用生成明文吗?

(生成的BAT文件内容,放在控制台的输入管道,类似的RUNDOSINMEMO就是这样做)
参考:http://www.2ccc.com/article.asp?articleid=2029


原理可行,但要实现CMD的全功能很难搞。
很多CMD批处理都修改了CMD窗口的颜色和字体,
"管道"方式处理起来很复杂,执行效率也很低,代码很多,搞成的EXE也很大。
回复

使用道具 举报

 楼主| 发表于 2008-8-21 21:31:04 | 显示全部楼层
原帖由 spycolin 于 2008-8-18 21:19 发表
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 ...


看不会,太太太了。
回复

使用道具 举报

发表于 2008-8-27 23:37:22 | 显示全部楼层

回复 #266 lxl1638 的帖子

老大,WinCMD不同于PECMD, 一般使用于正常的系统中,是否可考虑下:
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                             WinCMD - 命令解释程序,内置以下环境变量的支持                              ┃
┣━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━┯━━━━━━━━━━━━━━━━━┫
┃CurDir              配置文件目录│Desktop               系统桌面目录│Favorites               收藏夹目录┃
┃Personal            我的文档目录│Programs              程序菜单目录│SendTo                  发送到目录┃
┃StartMenu           开始菜单目录│Startup               启动菜单目录│QuickLaunch             快速启动栏┃
┗━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━┛
这几个变量(除第一个)应该使用于正常系统中而不是PE中?
回复

使用道具 举报

 楼主| 发表于 2008-8-28 10:29:22 | 显示全部楼层
原帖由 玄天 于 2008-8-27 23:37 发表
老大,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%
回复

使用道具 举报

发表于 2008-8-28 20:07:51 | 显示全部楼层

回复 #268 lxl1638 的帖子

一直用pecmd,因为新的wincmd可以内嵌脚本,所以正常系统中才用它(PE中已经有pecmd了,在用它实在多于)
看来只好多写几个符号咯:)
回复

使用道具 举报

发表于 2008-8-28 20:10:38 | 显示全部楼层
哦,还有个问题:
就是在vista系统中内嵌wincmd脚本,运行是基本上都会出错,有时是双击后出错,有时是执行完后出错....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-19 07:20

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表