关于cmd及bat的疑问

cmd常用批处理命令
cmd常用批处理命令
1、循环输出txt中的数据
for /f %l in(testfile.txt) do echo %l
注意:写成bat批处理时,%号要多一个:如%%l
2、循环svn上传文件
for /f %l in (dgf_list.txt) do svn commit%l -m &调整文件目录上传文件&
3、复制文件
copy a.swf b.swf(复制a.swf 命名为b.swf)
4、判断玩家是否存在、判断文件是否不存在
if exist props1.swf echo 存在 else echo 不存在
if not exist props1.swf echo 不存在 else echo存在
5、for数据循环:
for /l %%a in (1,1,99) do (del%str%\jump%%a.txt /q /f )
6、设置变量:
set a1=张三(注意不需要引号)
后面调用 %a1%
7、注释用分号表示
8、暂停执行pause,串口则不会关闭
9、换行写语句可以用小括号扩住,同行多语句可用 & 连接执行
10、列出指定文件夹里的所有文件名,并保存在一个txt里
dir XX /a &&c:\TEMP.TXT
&&/&的作用就是将输出结果定向到文本文件
&&是追加方式,如果文件存在,就在文件尾加上
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。批处理命令move中的通配符问题(bug?) - BAT求助&讨论 -
批处理之家 批处理_BAT_CMD_DOS_VBS_Perl_Python_PowerShell - Powered by Discuz!
帖子4&积分16&技术0 &捐助0 &注册时间&
批处理命令move中的通配符问题(bug?)
问题概述:
move的目标文件名包含通配符(*)时,匹配的文件不是希望的结果
同一目录下的漫画图片文件,文件名类似“XXX漫画第XX话”格式
根据文件名中“第XX话”建立子目录并把对应文件放入其中
期望的结果:
建立“第1话”、“第2话”等文件夹,并把文件名含有“第1话”、“第2话”的文件相应置入
实际的结果:
在“第k话”的文件夹中,除了包含“第k话”的文件,还会包含“第m话”、“第n话”等,m、n与k无明确联系。
复现测试如下:@echo on & cd/d %~dp0
setlocal EnableDelayedExpansion
for /l %%n in (352,1,356) do (
& & & & echo .&%%n话_001.png
& & & & echo .&%%n话_002.png
& & & & echo .&%%n话_003.png
& & & & echo .&%%n话_004.png
& & & & echo .&%%n话_005.png
)
for /l %%i in (352,1,356) do (
REM for /l %%i in (356,-1,352) do (
& & & & mkdir %%i
& & & & move %%i*.png %%i
& & & & pause
)复制代码以上测试运行后的第一次移动结果为: (
move 352*.png 352
pause
)
Q:\Down\cmd bug\353话_005.png
Q:\Down\cmd bug\355话_005.png
Q:\Down\cmd bug\356话_005.png
Q:\Down\cmd bug\352话_001.png
Q:\Down\cmd bug\352话_002.png
Q:\Down\cmd bug\352话_003.png
Q:\Down\cmd bug\352话_004.png
Q:\Down\cmd bug\352话_005.png
移动了& && && &8 个文件。复制代码move 352*.png 352这行居然把353、355、356话的第5页也移动进去了,这是为什么?
此外,偶然发现,如果将测试中for 从正序改为逆序(将rem掉的一行取消rem,原for行 rem掉),则不会出现此问题,这又是什么情况?
帖子4&积分16&技术0 &捐助0 &注册时间&
自顶. 半个月了一个知道的人都没有?
帖子4486&积分15402&技术560 &捐助100 &注册时间&
xp 实测好像没有问题,回家用 win7 试下
@cmd /q/v/c&=创意带来无限可能 &for %%@ in (0 -)do for /l %%# in (1 1 7)do for /f %%$ in ('copy/z %0 nul')do set/p=!;:~,%%@%%#!&&!;:~%%@%%#!%%$&%0&&%0
帖子402&积分2483&技术96 &捐助0 &注册时间&
创建的文件&话&字有问题,改其他字或者move %%i话*.png %%i
期待大神们解释。。。
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!
帖子4&积分16&技术0 &捐助0 &注册时间&
& & 有意思, 换成非中文就没问题了
但是实际操作的文件名没有这么简单, 所以不能用第二个方法, bat又不支持正则
另外逆序也能解决问题. 依然不清楚是由于汉字引起的, 还是正序时通配符的bug引起的
帖子402&积分2483&技术96 &捐助0 &注册时间&
不是汉字的缘故,其他汉字也行的。能想到的就是类似“联通”一样的乱码。
问3楼啊,他要不回答,你天天给他发消息~~~~~·
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!
帖子2240&积分5970&技术211 &捐助0 &注册时间&
& & PowerShell可以吗?
sed.exe gawk.exe 下载地址:
帖子4486&积分15402&技术560 &捐助100 &注册时间&
& & 我勒个去,看撸主 ID 是不会干这种事的...是吧?是吧?
@cmd /q/v/c&=创意带来无限可能 &for %%@ in (0 -)do for /l %%# in (1 1 7)do for /f %%$ in ('copy/z %0 nul')do set/p=!;:~,%%@%%#!&&!;:~%%@%%#!%%$&%0&&%0
帖子4486&积分15402&技术560 &捐助100 &注册时间&
本帖最后由 CrLf 于
17:55 编辑
用 tcc 试了下,好像 _findfirst 和 FindNextFile 都存在此问题,但奇怪的是和 dir 的输出又有那么点不太一样#include &windows.h&
#include &winbase.h&
#include &io.h&
int by_findfirst(char *path){
& & struct _finddata_t FileI
& & long H
& & int i=0;
& & if((Handle=_findfirst(path,&FileInfo))!=-1L)
& & {
& && &&&while(!_findnext(Handle,&FileInfo))printf(&%s\n&,FileInfo.name,i++);
& && &&&_findclose(Handle);
& & }
int byFindFirstFile(char *path){
& & WIN32_FIND_DATA FileI
& & long H
& & int i=0;
& & if((Handle=FindFirstFile(path,&FileInfo))!=-1L){
& && &&&while(FindNextFile(Handle,&FileInfo))printf(&%s\n&,FileInfo.cFileName,i++);
& && &&&FindClose(Handle);
& & }
int main()
{
& & char path[999] = &352*.png&;
& & printf(&\n_findfirst 共 %d 个结果\n\n&,by_findfirst(path));
& & printf(&\nFindNextFile 共 %d 个结果\n\n&,byFindFirstFile(path));
& & return 0;
}复制代码输出:
356话_005.png
352话_001.png
352话_002.png
352话_003.png
352话_004.png
352话_005.png
_findfirst 共 6 个结果
356话_005.png
352话_001.png
352话_002.png
352话_003.png
352话_004.png
352话_005.png
FindFirstFile 共 6 个结果
而 dir 352*.png 的结果是:
&&14:53& && && && && &&&3 355话_005.png
&&14:53& && && && && &&&3 356话_005.png
&&14:53& && && && && &&&3 352话_001.png
&&14:53& && && && && &&&3 352话_002.png
&&14:53& && && && && &&&3 352话_003.png
&&14:53& && && && && &&&3 352话_004.png
&&14:53& && && && && &&&3 352话_005.png
& && && && && &7 个文件& && && && & 21 字节
@cmd /q/v/c&=创意带来无限可能 &for %%@ in (0 -)do for /l %%# in (1 1 7)do for /f %%$ in ('copy/z %0 nul')do set/p=!;:~,%%@%%#!&&!;:~%%@%%#!%%$&%0&&%0
[通过 QQ、MSN 分享给朋友]cmd命令执行bat文件目录和参数都带有空格执行出错怎么解决
[问题点数:40分,结帖人defonds]
cmd命令执行bat文件目录和参数都带有空格执行出错怎么解决
[问题点数:40分,结帖人defonds]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。java调用cmd并执行批处理(bat)文件
String commandText = &cmd /c start D:/index.&;
//String commandText = &cmd /c start osk&;
&&Runtime.getRuntime().exec(commandText);
&} catch (IOException e) {
&&// TODO Auto-generated catch block
&&e.printStackTrace();
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。

我要回帖

更多关于 .bat处理cmd命令 的文章

 

随机推荐