九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
經(jīng)典批處理分析(二)
經(jīng)典批處理分析(二) 收藏
 
@echo off
:: 保留空行替換字符串
:: 當(dāng)行首有冒號時會拋掉最開始的幾個連續(xù)冒號(這個問題可以解決)
:: 會忽略以分號開頭的行
:: 不能正確處理感嘆號(因為啟用了變量延遲)
:: code by jm modify on 2006-11-1
:: 出處:http://www.cn-dos.net/forum/viewthread.php?tid=22033
set file=
set /p file=  請把要處理的文件拉到本窗口:
set "file=%file:"=%"
for %%i in ("%file%") do set "file=%%~fi"
echo.
set replaced=
set /p replaced= 請輸入即將被替換的內(nèi)容:
echo.
set all=
set /p all=  請輸入替換字符串:
cd.>"%file%_tmp.txt"
setlocal enabledelayedexpansion
for /f "tokens=1* delims=:" %%i in ('findstr /n .* "%file%"') do (
    set str=%%j
    if not "!str!"=="" set "str=!str:%replaced%=%all%!"
    >>"%file%_tmp.txt" echo.!str!
)
copy "%file%" "%file%_bak.txt" >nul 2>nul
move "%file%_tmp.txt" "%file%"
start "" "%file%"
這個批處理實現(xiàn)對一個文件的字符串替換。它使用了很多技巧,且聽我慢慢道來:
首先,我覺得“set file=”這個是沒有必要的,像是對變量的聲明。第11行將雙引號去除,這是很有必要的,因為file變量將作為for命令中的fileset,否則運行時會解釋錯誤。13行,在echo后面加一個小點,這里實現(xiàn)一個空行顯示。19行創(chuàng)建一個空白的文本文件作為文件交換的臨時文件。這里cd命令后面又跟了一個小點,可以理解為這是切換到當(dāng)前目錄下,其實等于什么也沒做。'findstr /n .* "%file%"'使用正則表達式查找文件里的字符串,/n表示顯示行號, .*查找任意字符。命令執(zhí)行結(jié)果作為for命令的處理對象。變量描述“tokens=1* delims=:”表示將處理對象中的一行按冒號為分隔符分成兩塊,%i表示第一塊,其它部分由%j表示。這樣,22行中的str變量里存儲的將是沒有行號和冒號的查找結(jié)果。23和24號就對變量于進行了變量替換,并將結(jié)果追加到臨時文件中。26行的>nul 將結(jié)果重定向到空的設(shè)備當(dāng)中,2>nul表示將錯誤的輸出也重定向到空設(shè)備中,為的是不回顯任何結(jié)果。最后一行,打開文件。
這里重點說明一下 2>nul :2在這里是句柄描述符,表示數(shù)據(jù)流輸入輸出的地址。
句柄  | 句柄的數(shù)字代號 | 說明
STDIN     0 鍵盤輸入
STDOUT 1 輸出到命令提示符窗口
STDERR  2 錯誤輸出到命令提示符窗口
這是我們常用到的句柄。
這個批處理以交互的方式提供對文件里的字符串進行替換,稍加修改就可以適應(yīng)于處理大批量的文件。
have fun!
 

本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/kudoo/archive/2008/09/14/2880266.aspx
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
BAT語句:if語句和for語句
dos命令bat文件中的特殊符號意思 12個
DOS批處理中的字符串處理詳解(字符串截取)
Bash 編程
Bash概論 - Linux系列教程補充篇
FOR的參數(shù)/F之delims詳解
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服