返回列表 发帖

[其他] do.bat - 在管道符后面使用 do

本帖最后由 tmplinshi 于 2015-3-19 18:57 编辑
:: do.bat
@echo off
if "%~1" == ""   goto help
if "%~1" == "/?" goto help
:main
setlocal
set args=%*
if /i "%~1" == "-f" set args=%args:*-f =%
set "var=%args:"=|%"
if "%var:~0,1%%var:~-1%" == "||" set "args=%args:~1,-1%"
(
    for /f delims^=^ eol^= %%a in (' findstr .* ') do %args%
) || (
    if /i "%~1" == "-f" (
        for /f "tokens=*" %%a in (" ") do %args%
    )
)
exit /b
:help
echo do.bat - 在管道符后面使用 do
echo,
echo 用法: ^<命令^> ^| do [-f] ^<命令^>
echo,
echo     -f    强制执行。(即使 stdin 是空的,也依旧执行)
echo,
echo 示例:
echo,
echo     1. 查找包含字符串 str 的文件,并移动到文件夹 _dir
echo          findstr /m "str" * ^| do move "%%a" "_dir\"
echo     2. 如果命令中含有特殊字符,需要用双引号括起来
echo          echo test ^| do "echo %%a & echo END"
echo     3. -f 参数使用示例
echo          cd . ^| do -f echo "%%a"
exit /bCOPY
1

评分人数

顶,很不错

TOP

tmplinshi 发表于 2012-11-29 02:34



    版主请教下。

do.bat  具体如何使用?功能是啥?

TOP

回复 3# ygqiang


    do.bat 之所以产生,是因为有时候我需要在命令提示符窗口输入 for 命令,而输入长长的 for ... 是件非常麻烦的事。

比较一下这两个命令:
C:\>for /f %a in ('dir /a:d /b /s *1x1') do ren "%a" "img"
C:\>dir /a:d /b /s *1x1 | do ren "%a" "img"

用 do.bat 是不是方便很多呢!

执行 do /? 能看到用法说明。

TOP

回复 3# ygqiang


    保存代码do.bat放到系统system32目录下。

这功能确实很方便啊。
问题解决后,请在标题前面注明[已解决],并给回答者加分——化繁为简,提高工作效率!

TOP

回复 5# Linuxer


    昂,冒泡了冒泡了
    duang 的就被抓到了

TOP

返回列表