『壹』 批處理命令字元串操作
1:怎麼提取文件所在文件夾的路徑,如從F:\TDDOWNLOAD\1.txt提取出F:\TDDOWNLOAD\
for %%a in (F:\TDDOWNLOAD\1.txt ) do echo %%~dpa
2:怎麼從abc字元串中去除bc字元串,剩下a
setlocal enabledelayedexpansion
set str1=abc
set str2=bc
set str1=!str1:%str2%=!
echo %str1%
『貳』 如何使用批處理命令截取字元串指定部分
以下代碼復制粘貼到記事本,另存為xx.bat,編碼選ANSI
@echo off
rem 去掉字元串開頭的空格
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
set "s= a b c"
for /f "tokens=*" %%a in ("%s%") do set "s=%%a"
echo;%s%
echo;%#% +%$%%$%/%@% %z%
pause
exit
『叄』 批處理 根據查找到的字元串 執行相應的命令
echo %sysinfo%|find "8"
if %errorlevel%==0 goto win8
echo %sysinfo%|find "7"
if %errorlevel%==0 (goto win7) else (goto xp)如果不對,應該是sysinfo變數在win8下就沒有取到「8」這個字元,肯定是其他產品標識,換成相應的標志字元即可。win8以前,成功時errorlevel為0,失敗為1;win8好像變成1和2了,所以這么做就不行了,如果把第一個判斷改為errorlevel==1,則在win7和xp下就會跳轉到win8段。
如果您能夠確定就這三種類型系統運行該批處理,可以這樣改(不太嚴謹,但應該能解決問題):
@echo %sysinfo%|find "7"
@if %errorlevel%==0 goto win7
@echo %sysinfo%|find "XP"
@if %errorlevel%==0 (goto xp) else (goto win8)
:win8
echo 我是Win8
pause
exit
:xp
echo 我是XP
pause
exit
:win7
echo 我是Win7
pause
exit
解釋一下:win8下相當於原來所有判斷都不成立,直接去執行接下來的:XP段了,所以您看到了錯誤的結果。現在改完了相當於在XP和win7下都能正常跳轉,雖然在win8下還是不會跳轉,但是緊接著就是win8段,根據之前的錯誤結果這段會馬上執行,所有相當於利用該邏輯問題實現了系統判斷。請您再試試吧。
『肆』 批處理命令大全
help 查看
reg /? 查看
net /? 查看
ftp /? 查看
mt /? 查看
還有些外部命令工具,例如fport,choice等
附help查看的內容(屬dos內部命令)
ASSOC 顯示或修改文件擴展名關聯。
AT 計劃在計算機上運行的命令和程序。
ATTRIB 顯示或更改文件屬性。
BREAK 設置或清除擴展式 CTRL+C 檢查。
CACLS 顯示或修改文件的訪問控制列表(ACLs)。
CALL 從另一個批處理程序調用這一個。
CD 顯示當前目錄的名稱或將其更改。
CHCP 顯示或設置活動代碼頁數。
CHDIR 顯示當前目錄的名稱或將其更改。
CHKDSK 檢查磁碟並顯示狀態報告。
CHKNTFS 顯示或修改啟動時間磁碟檢查。
CLS 清除屏幕。
CMD 打開另一個 Windows 命令解釋程序窗口。
COLOR 設置默認控制台前景和背景顏色。
COMP 比較兩個或兩套文件的內容。
COMPACT 顯示或更改 NTFS 分區上文件的壓縮。
CONVERT 將 FAT 卷轉換成 NTFS。您不能轉換
當前驅動器。
COPY 將至少一個文件復制到另一個位置。
DATE 顯示或設置日期。
DEL 刪除至少一個文件。
DIR 顯示一個目錄中的文件和子目錄。
DISKCOMP 比較兩個軟盤的內容。
DISKCOPY 將一個軟盤的內容復制到另一個軟盤。
DOSKEY 編輯命令行、調用 Windows 命令並創建宏。
ECHO 顯示消息,或將命令回顯打開或關上。
ENDLOCAL 結束批文件中環境更改的本地化。
ERASE 刪除至少一個文件。
EXIT 退出 CMD.EXE 程序(命令解釋程序)。
FC 比較兩個或兩套文件,並顯示
不同處。
FIND 在文件中搜索文字字元串。
FINDSTR 在文件中搜索字元串。
FOR 為一套文件中的每個文件運行一個指定的命令。
FORMAT 格式化磁碟,以便跟 Windows 使用。
FTYPE 顯示或修改用於文件擴展名關聯的文件類型。
GOTO 將 Windows 命令解釋程序指向批處理程序
中某個標明的行。
GRAFTABL 啟用 Windows 來以圖像模式顯示
擴展字元集。
HELP 提供 Windows 命令的幫助信息。
IF 執行批處理程序中的條件性處理。
LABEL 創建、更改或刪除磁碟的卷標。
MD 創建目錄。
MKDIR 創建目錄。
MODE 配置系統設備。
MORE 一次顯示一個結果屏幕。
MOVE 將文件從一個目錄移到另一個目錄。
PATH 顯示或設置可執行文件的搜索路徑。
PAUSE 暫停批文件的處理並顯示消息。
POPD 還原 PUSHD 保存的當前目錄的上一個值。
PRINT 列印文本文件。
PROMPT 更改 Windows 命令提示符。
PUSHD 保存當前目錄,然後對其進行更改。
RD 刪除目錄。
RECOVER 從有問題的磁碟恢復可讀信息。
REM 記錄批文件或 CONFIG.SYS 中的注釋。
REN 重命名文件。
RENAME 重命名文件。
REPLACE 替換文件。
RMDIR 刪除目錄。
SET 顯示、設置或刪除 Windows 環境變數。
SETLOCAL 開始批文件中環境更改的本地化。
SHIFT 更換批文件中可替換參數的位置。
SORT 對輸入進行分類。
START 啟動另一個窗口來運行指定的程序或命令。
SUBST 將路徑跟一個驅動器號關聯。
TIME 顯示或設置系統時間。
TITLE 設置 CMD.EXE 會話的窗口標題。
TREE 以圖形模式顯示驅動器或路徑的目錄結構。
TYPE 顯示文本文件的內容。
VER 顯示 Windows 版本。
VERIFY 告訴 Windows 是否驗證文件是否已正確
寫入磁碟。
VOL 顯示磁碟卷標和序列號。
XCOPY 復制文件和目錄樹。
『伍』 批處理命令 處理文件字元串超長問題
vbs
atxt=".a.txt"
btxt="..txt"
oldstr="abc"
newstr="zzz"
Setfso=Wscript.CreateObject("Scripting.FileSystemObject")
setf=fso.opentextfile(atxt)
s=replace(f.readall,oldstr,newstr)
f.close
setr=fso.opentextfile(btxt,2,true)
r.writes
msgbox"完成!"
Wscript.quit
互助互利,請及時點擊【採納回答】
『陸』 批處理查找字元串
用find 命令,語法為:FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]f /V 顯示所有未包含指定字元串的行。
/C 僅顯示包含字元串的行數。
/N 顯示行號。
/I 搜索字元串時忽略大小寫。
/OFF[LINE] 不要跳過具有離線屬性集的文件。
"string" 指定要搜索的文字串,
[drive:][path]filename
指定要搜索的文件。如果沒有指定路徑,FIND 將搜索鍵入的或者由另一命令產生的文字。 按照你的要求可以這樣寫:echo %s1%|find "XXX" rem 查找變數s1中的XXX字元串
『柒』 批處理的字元串
批處理有著具有非常強大的字元串處理能力,其功能絕不低於C語言裡面的字元串函數集。批處理中可實現的字元串處理功能有:截取字元串內容、替換字元串特定欄位、合並字元串、擴充字元串等功能。下面對這些功能一一進行講解。 截取字元串可以說是字元串處理功能中最常用的一個子功能了,能夠實現截取字元串中的特定位置的一個或多個字元。舉例說明其基本功能:
=========================================
@echo off
set ifo=abcdefghijklmnopqrstuvwxyz0 12 3456789
echo 原字元串(第二行為各字元的序號):
echo %ifo%
echo 1234567890123 45678901234567890123456
echo 截取前5個字元:
echo %ifo:~0,5%
echo 截取最後5個字元:
echo %ifo:~-5%
echo 截取第一個到倒數第6個字元:
echo %ifo:~0,-5%
echo 從第4個字元開始,截取5個字元:
echo %ifo:~3,5%
echo 從倒數第14個字元開始,截取5個字元:
echo %ifo:~-14,5%
pause
=========================================
當然,上面的例子只是將字元串處理的基本功能展示出來了,還看不出字元串處理具體有什麼用處。下面這個例子是對時間進行處理。
=========================================
@echo off
echo 當前時間是:%time% 即 %time:~0,2%點%time:~3,2%分%time:~6,2%秒%time:~9,2%厘秒
pause
========================================= 替換字元串,即將某一字元串中的特定字元或字元串替換為給定的字元串。舉例說明其功能:
=========================================
@echo off
set aa=偉大的中國!我為你自豪!
echo 替換前:%aa%
echo 替換後:%aa:中國=中華人民共和國%
echo aa = %aa%
set aa=%aa:中國=中華人民共和國%
echo aa = %aa%
pause
=========================================
對於上面的例子有一點說明,對比兩個echo aa = %aa%可以發現,如果要修改變數aa的內容的話,就需要將修改結果「%aa:中國=中華人民共和國%」賦值給變數aa。上面的字元串截取也有著同樣的特點。 其實,合並字元串就是將兩個字元串放在一起就可以了。舉例說明:
=========================================
@echo off
set aa=偉大的中國!
set bb=我為你自豪!
echo %aa%%bb%
echo aa=%aa%
echo bb=%bb%
set aa=%aa%%bb%
echo aa=%aa%
pause
=========================================
同樣,如果要改變變數aa的內容的話,就需要將合並結果「%aa%%bb%」賦值給變數aa。 「擴充」這個詞彙來自於微軟自己的翻譯,意思就是對表示文件路徑的字元串進行特殊的處理,具體功能羅列如下:
=========================================
~I - 刪除任何引號(),擴充 %I
%~fI - 將 %I 擴充到一個完全合格的路徑名
%~dI - 僅將 %I 擴充到一個驅動器號
%~pI - 僅將 %I 擴充到一個路徑
%~nI - 僅將 %I 擴充到一個文件名
%~xI - 僅將 %I 擴充到一個文件擴展名
%~sI - 擴充的路徑只含有短名
%~aI - 將 %I 擴充到文件的文件屬性
%~tI - 將 %I 擴充到文件的日期/時間
%~zI - 將 %I 擴充到文件的大小
%~$PATH:I - 查找列在路徑環境變數的目錄,並將 %I 擴充
到找到的第一個完全合格的名稱。如果環境變數名
未被定義,或者沒有找到文件,此組合鍵會擴充到
空字元串
可以組合修飾符來得到多重結果:
%~dpI - 僅將 %I 擴充到一個驅動器號和路徑
%~nxI - 僅將 %I 擴充到一個文件名和擴展名
%~fsI - 僅將 %I 擴充到一個帶有短名的完整路徑名
%~dp$PATH:i - 查找列在路徑環境變數的目錄,並將 %I 擴充
到找到的第一個驅動器號和路徑。
%~ftzaI - 將 %I 擴充到類似輸出線路的 DIR
=========================================
以上內容引用於for /?幫助信息。其中的I代表變數I,不過需要說明的是,不是所有的變數都能夠進行擴充的,有兩個條件:1.該字元串代表一個文件路徑;2.變數要用%x來表示,x可取a-z A-Z 0-9共62個字元中的任意一個。舉例說明:
=========================================
@echo off
echo 正在運行的這個批處理:
echo 完全路徑:%0
echo 去掉引號:%~0
echo 所在分區:%~d0
echo 所處路徑:%~p0
echo 文件名:%~n0
echo 擴展名:%~x0
echo文件屬性:%~a0
echo 修改時間:%~t0
echo 文件大小:%~z0
pause
=========================================
其中的%0是批處理裡面的參數,代表當前運行的批處理的完全路徑。類似的還有%1-%9,分別代表傳遞來的第1-9個參數。例子如下:
===============================================
@echo off
set aa=C:WindowsPPPa.btx
call :deal aaa %aa% c c ddd eee
pause>nul
exit
:deal
echo %%0 = %0
echo %%1 = %1
echo %%2 = %2
echo %%3 = %3
echo %%4 = %4
echo %%5 = %5
===============================================
其中,變數aa在之前是不可以擴充的,通過call命令並將aa作為參數傳遞給子函數:deal,將aa變數轉換成了變數%1,即符合%x格式,從而可以進行字元串擴充。
至於%x中x取a-z A-Z的形式,可以復習一下for語句,for語句裡面的變數就是用%x來表示的,因而可以直接進行擴充。
『捌』 Windows批處理CMD如何截取一個字元串中指定字元後面的字元串
1、首先打開cmd窗口,然後輸入格式:%PATH:str1=str2% 將字元串的變數%PATH%中的str1替換為str2。
『玖』 如何用批處理bat將多個txt文件中的指定字元串刪除
不清楚你的實際文件/情況,僅以問題中的樣例/說明為據
以下代碼復制粘貼到記事本,另存為xx.bat,編碼選ANSI,跟要處理的文件放一起運行
<# :
cls
@echo off
rem 根據一個指定文本文件里列出的多個字元串,將多個txt文本文件內的這些字元串刪除
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default))) -Args '%~dp0'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$path=$args[0];
$newfolder=$path+"#result";
$wordsfile=$path+"deletewords.log";
if(-not (test-path -liter $wordsfile)){Write-host ('"'+$wordsfile+'" not found');exit;};
if(-not (test-path -liter $newfolder)){[void](md $newfolder)};
$files=@(dir -liter $path|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});
$enc=[Text.Encoding]::Default;$n=[char]([int]'56');
$wordslist=[IO.File]::ReadAllLines($wordsfile, $enc);
for($i=0;$i -lt $files.length;$i++){
write-host $files[$i].Name;
$text=[IO.File]::ReadAllText($files[$i].FullName, $enc);
for($j=0;$j -lt $wordslist.count;$j++){
$text=$text.replace($wordslist[$j], '');
};
if(($i+1) -le [int]$n.toString()){
$newfile=$newfolder+'\'+$files[$i].Name;
[IO.File]::WriteAllText($newfile, $text, $enc);
};
}
『拾』 如何用批處理命令(其他也可以)根據特定的字元串對某個文件夾里的所有文件進行分類
只能處理純文本文件哦,批處理可放任意位置
@echo off&color f1
::下四行分別是要處理的文件夾、兩字元串、新文件夾在哪建
cd/d "c:\x"
set "s1=aaa"
set "s2=bbbb"
set newd=c:\
if not exist "%newd%%s1%\" md ""%newd%%s1%"
if not exist "%newd%%s2%\" md "%newd%%s2%"
echo 正在處理:
for /f "tokens=*" %%a in ('dir/b/a-d ')do (
set/p fn=<"%%~a"
call :y "%%~a")
pause&exit
:y
call set a=%%fn:%s1%=ゅ%%
call set b=%%fn:%s2%=ゅ%%
if "%a:~,1%"=="ゅ" ( %1 "%newd%%s1%\">nul&echo %~1 =^> %newd%%s1%)
if "%b:~,1%"=="ゅ" ( %1 "%newd%%s2%\">nul&echo %~1 =^> %newd%%s2%)