Board logo

标题: [其他] 搜集一下一些罕见的批处理知识大家来帮忙 【不定期更新】 [打印本页]

作者: 基拉freedom    时间: 2009-8-12 22:34     标题: 搜集一下一些罕见的批处理知识大家来帮忙 【不定期更新】

大家有的话 分享下.....谢谢
  1. 用set /p x<x.txt 最大只有1024字节
  2. 而用for可达到8KB
  3. (以上借用 不好意思)
复制代码
  1. 4L
  2. pakTC 提供:
  3. 一般的windows上 shutdown 命令关机的最大延时是
  4. -t 3153599999
  5. 以前刚学会弄 乱弄,shutdown -s -t 315359999
  6.                   然后注销  shutdown -l
  7. 结果就停在那个界面,按什么都不灵,只有power…… 电源.....
  8. 哦对了 365天的秒数是:
  9. ======================
  10. C:\>set /a x=365*3600*24   
  11. 31536000
  12. =======================
  13. shutdown -s -t 315359999 就是大约 10年-1秒了~
  14. 如果都知道就当我刷分……
复制代码
  1. rat提供
  2. C:\><nul set/p="a"b
  3. a
复制代码
  1. 523066680提供
  2. 10次 ping -n 1 127.1>nul  的时间 小于
  3. 1次  ping -n 2 127.1>nul
  4. 所以一般写效果 我用n次ping 1   大概3~8 次 这样的延时比较适合。
  5. 次数3次以上的用for结合了
  6. 效果比如下面这个
  7. @echo off&setlocal enabledelayedexpansion&mode con cols=25 lines=1
  8. title 进度条
  9. set /a a=0
  10. :a
  11. set /a a+=1
  12. for %%a in (▏ ▎ ▍ ▌ ▋ ▊ ▉) do (set /p=%%a<nul &ping -n 1 127.1>nul &ping -n 1 127.1>nul &ping -n 1 127.1>nul &set /p=   <nul)
  13. set /p=█<nul
  14. if %a% lss 10 (goto :a)
  15. set /p= End<nul&pause>nul
复制代码
  1. keen
  2. for 中tokens的令牌数最大是31个,就是提取的列。
  3. 可以参看:
  4. http://bbs.bathome.net/thread-5437-1-6.html
  5. http://bbs.bathome.net/thread-5548-1-2.html
  6. setlocal 最大的递归层是32。
  7. 可以参考:
  8. http://bbs.bathome.net/viewthread.php?tid=2051&highlight=setlocal
复制代码
  1. rat提供
  2. @set @j=1//%@j%&call set @j=%%@j:~3%%&start cscript -nologo -e:jscript "%~f0"&goto :eof
  3. WSH.Echo("Exit After 3s Elapses")
  4. WSH.Sleep(3000)
  5. js与bat同体。
  6. js:
  7. 用条件编译语句来创建变量:@set @j=1
  8. //后面的被注释。
  9. bat:
  10. 先把@j还原,然后调用cscript执行。
  11. 上面是js为主体,也可以用/**/多行注释包含更完整bat:
  12. @set @j=1/*
  13. @set @j=%@j:~3%
  14. ::------bat------::
  15. @echo off & setlocal
  16. set s=3
  17. echo Exit After %s%s Elapses
  18. start /b cscript -nologo -e:jscript "%~f0" %s%
  19. goto :eof
  20. ::------bat------::
  21. */
  22. //------js------//
  23. WSH.Sleep(WSH.Arguments(0) * 1000)
  24. //------js------//
复制代码
  1. rat提供
  2. for /r的几种错误调用方式:
  3. 1、嵌套在另一个for里面
  4. for %%a in (1 2) do (
  5. for /r %%a\ %%x in (hi) do echo %%a
  6. )
  7. 2、变量延迟
  8. setlocal enabledelayedexpansion
  9. set d=1
  10. for /r !d!\ %%x in (hi) do echo %%a
  11. setlocal enabledelayedexpansion
  12. if 1==1 (
  13. set d=1
  14. for /r !d!\ %%x in (hi) do echo %%a
  15. )
  16. for /r 1\ %%a in (hi) do echo.%%a
复制代码
  1. 刚刚有人在这个区问的 感觉很不错
  2. 也转过来
  3. 将用 netstat /? 的帮助信息输出到文件夹
  4. 直接用netstat /? >**.txt 是没用的
  5. 要用netstat /? 2>**.txt
复制代码
  1. rat:
  2. ren去后缀与去文件名
  3. 去后缀
  4. ren c:\test\a.txt *.
  5. 去文件名
  6. ren c:\test\a.txt .*
复制代码
  1. PakTC
  2. 映射 文件: fsutil
  3. C:\>fsutil hardlink create
  4. 用法 : fsutil hardlink create <新文件名> <现有文件名>
  5. 例如 : fsutil hardlink create c:\foo.txt c:\bar.txt
复制代码

[ 本帖最后由 基拉freedom 于 2009-8-18 20:20 编辑 ]
作者: 小勇12    时间: 2009-8-12 23:15

我也支持,在这方面的确不懂
作者: wwenyunkui    时间: 2009-8-13 17:12

懂得太少,跟各位学习啦
作者: PakTC    时间: 2009-8-13 20:59

一般的windows上 shutdown 命令关机的最大延时是

-t 3153599999

以前刚学会弄 乱弄,shutdown -s -t 315359999
                  然后注销  shutdown -l

结果就停在那个界面,按什么都不灵,只有power…… 电源.....

哦对了 365天的秒数是:
======================
C:\>set /a x=365*3600*24   

31536000

=======================

shutdown -s -t 315359999 就是大约 10年-1秒了~




如果都知道就当我刷分……

[ 本帖最后由 PakTC 于 2009-8-13 21:02 编辑 ]
作者: rat    时间: 2009-8-13 21:04

C:\><nul set/p="a"b
a
作者: BBCC    时间: 2009-8-13 23:38

楼上那个算是bug还是什么?
作者: rat    时间: 2009-8-14 18:54

请问这个句子是什么原理?

楼上那个算是bug还是什么?


不知道什么原因,只是发现这个现象。
作者: 523066680    时间: 2009-8-14 18:59

10次 ping -n 1 127.1>nul  的时间 小于
1次  ping -n 2 127.1>nul

所以一般写效果 我用n次ping 1   大概3~8 次 这样的延时比较适合。

次数3次以上的用for结合了


效果比如下面这个

  1. @echo off&setlocal enabledelayedexpansion&mode con cols=25 lines=1
  2. title 进度条
  3. set /a a=0
  4. :a
  5. set /a a+=1
  6. for %%a in (▏ ▎ ▍ ▌ ▋ ▊ ▉) do (set /p=%%a<nul &ping -n 1 127.1>nul &ping -n 1 127.1>nul &ping -n 1 127.1>nul &set /p=   <nul)
  7. set /p=█<nul
  8. if %a% lss 10 (goto :a)
  9. set /p= End<nul&pause>nul
复制代码

[ 本帖最后由 523066680 于 2009-8-14 19:01 编辑 ]
作者: keen    时间: 2009-8-14 20:57

不知道算不算:
  1. for 中tokens的令牌数最大是31个,就是提取的列。
  2. 可以参看:
  3. http://bbs.bathome.net/thread-5437-1-6.html
  4. http://bbs.bathome.net/thread-5548-1-2.html
复制代码
  1. setlocal 最大的递归层是32。
  2. 可以参考:
  3. http://bbs.bathome.net/viewthread.php?tid=2051&highlight=setlocal
复制代码

[ 本帖最后由 keen 于 2009-8-14 21:02 编辑 ]
作者: rat    时间: 2009-8-15 15:28

  1. @set @j=1//%@j%&call set @j=%%@j:~3%%&start cscript -nologo -e:jscript "%~f0"&goto :eof
  2. WSH.Echo("Exit After 3s Elapses")
  3. WSH.Sleep(3000)
复制代码
js与bat同体。
js:
用条件编译语句来创建变量:@set @j=1
//后面的被注释。
bat:
先把@j还原,然后调用cscript执行。

上面是js为主体,也可以用/**/多行注释包含更完整bat:
  1. @set @j=1/*
  2. @set @j=%@j:~3%
  3. ::------bat------::
  4. @echo off & setlocal
  5. set s=3
  6. echo Exit After %s%s Elapses
  7. start /b cscript -nologo -e:jscript "%~f0" %s%
  8. goto :eof
  9. ::------bat------::
  10. */
  11. //------js------//
  12. WSH.Sleep(WSH.Arguments(0) * 1000)
  13. //------js------//
复制代码

作者: rat    时间: 2009-8-15 19:19

for /r的几种错误调用方式:

1、嵌套在另一个for里面
  1. for %%a in (1 2) do (
  2. for /r %%a\ %%x in (hi) do echo %%a
  3. )
复制代码

2、变量延迟
  1. setlocal enabledelayedexpansion
  2. set d=1
  3. for /r !d!\ %%x in (hi) do echo %%a
复制代码
  1. setlocal enabledelayedexpansion
  2. if 1==1 (
  3. set d=1
  4. for /r !d!\ %%x in (hi) do echo %%a
  5. )
复制代码

3、echo.
  1. for /r 1\ %%a in (hi) do echo.%%a
复制代码

[ 本帖最后由 rat 于 2009-8-15 19:24 编辑 ]
作者: rat    时间: 2009-8-18 17:20     标题: ren去后缀与去文件名

去后缀
  1. ren c:\test\a.txt *.
复制代码
去文件名
  1. ren c:\test\a.txt .*
复制代码

作者: PakTC    时间: 2009-8-18 17:52

映射 文件: fsutil

C:\>fsutil hardlink create
用法 : fsutil hardlink create <新文件名> <现有文件名>
例如 : fsutil hardlink create c:\foo.txt c:\bar.txt
作者: PakTC    时间: 2009-8-18 20:53

http://hi.baidu.com/523066680/bl ... 6b0d084b90a741.html

我在这里回最后一次帖,算是广告。
作者: rat    时间: 2009-8-19 23:44     标题: vbs、js分别与bat混合编程新解

vbs:
  1. echo=1'>nul&@cls&start wscript -e:vbs "%~f0"&goto :eof
  2. WSH.Echo "vbs"
复制代码
js:
  1. echo=1//>nul&@cls&start wscript -e:jscript "%~f0"&goto :eof
  2. WSH.Echo("js")
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2