㈠ 如何用批處理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);
};
}
㈡ 用BAT批處怎麼去除某一目錄下面的全部文件指定文件名的某個字元
@echo off
setlocal EnableDelayedExpansion
echo.&echo.&echo.&echo.&echo.
echo 說明:
echo.
echo 使用本bat文件可批量重命名本文件所在文件夾下的所有文件
echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.
set /p filename= 請輸入新的文件名(直接以數字重命名請直接回車):
echo.&set /p houzhui= 請輸入重命名的文件後綴類型(全部重命名請輸入*):
for /f "delims=" %%i in ('dir /a-d/b *.%houzhui%') do (
if not "%%~ni"=="%~n0" (
if !a! LSS 10 (ren "%%i" "%filename%0!a!.%houzhui%") else ren "%%i" "%filename%!a!.%houzhui%"
set/a a+=1
)
)
echo.&echo.&echo.&echo.&echo 操作完成,按任意結束……
pause>nul
㈢ 怎麼用bat截取指定字元串中間的字元串
1 如果是取最左的特定字元(串)之後的部分可用
set "MyVarB=%MyVarA:*.=%"
意思是變數MyVarA第一個.及之前部分替換為空
則MyVarB取得last.stand
當然繼續以此方法總是可以取到最後部分
:get
if not "%MyVarB:.=%"=="%MyVarB%" set MyVarB=%MyVarB:*.=%&goto :get
2 對於取最後一個點後的部分,可以把它想像成一個帶後綴的文件名
for %%i in ("%MyVarA%") do set "Vq=%%~xi"
set "MyVarB=%Vq:.=%"
註: set 命令後的引號不是必要的%%~xi 表示取後綴名 for命令中的雙%%符如在命令行需改為單%
因後綴名是帶.的,再把點替換為空(或去掉第一字元set "MyVarB=%Vq:~1%")
3 for命令是循環命令語法比較復雜比如還可以:
for %%i in ("%MyVarA:.=","%") do set "MyVarB=%%~i"
將原串每個.換成"," 且首尾都加上引號,這樣形成 "the","last","stand"的字元串
會以逗號為分隔符,循環執行do後的賦值命令,雖然執行了3次但最後一次是最終的賦值情況
還可有其它方法,建議先把如set這樣的簡單命令熟悉了再去研究for這樣的復雜命令
㈣ bat去除當前所有文件,以及文件夾內文件的特定字元
把你的邏輯嵌套在下面的邏輯裡面,復制可以直接用
@echooff
call:deal
for/f"delims="%%ain('dir/s/b/ad')do(
echo處理文件夾%%a
pushd%%a
call:deal
popd%%a
)
pause&exit
:deal
rem下面開始你的腳本
for/f"delims="%%1in('dir/a-d/b')do(
echo處理文件%%1
setwind=%%1
ren"%%~1""!wind:去除的字元=!"
)
㈤ 批處理中如何過濾所輸入的其它字元
你可以這樣寫啊:homeset /p choice= 請輸入您的選擇:
if "%choice%"=="1" goto autoip
if "%choice%"=="2" goto wxbgip
if "%choice%"=="3" goto setip1
if "%choice%"=="4" goto exitgoto home
㈥ bat批量移除文件名中指定字元
1、右鍵單擊需要刪除的文件,然後選擇屬性選項。
㈦ bat批量移除文件名中指定字元
教你批量刪除文件名中的部分字元:
步驟1,安裝工具軟體後打開,點擊【添加文件】按鈕,將需要修改名稱的文件全部添加到軟體中,也可以通過將文件拖動到軟體上的方式進行添加。
㈧ 怎麼用.BAT批量刪除文件名含有指定的字元
不清楚你的實際文件/情況,僅以問題中的樣例/說明為據;以下代碼復制粘貼到記事本,另存為xx.bat,編碼選ANSI,跟要處理的文件放一起雙擊運行
/*&cls&echooff&modeconlines=5000
rem刪除當前文件夾里文件名稱中的指定字元
set#=Anyquestion&set_=WX&set$=Q&set/az=0x53b7e0b4
title%#%+%$%%$%/%_%%z%
cd/d"%~dp0"
type"%~f0"|cscript-nologo-e:jscript"%~f0">"%tmp%v.v"
dir/a-d-h/b|find/i/v"%~nx0"|cscript-nologo-e:vbscript"%tmp%v.v"
echo;%#%+%$%%$%/%@%%z%
pause
exit
*/
vartext=WSH.StdIn.ReadAll();
varm=text.match(//* ([sS]+)*/s*$/);
WSH.echo(m[1]);
/*
delword="a"
Setfso=CreateObject("Scripting.Filesystemobject")
DoWhileWSH.StdIn.AtEndOfStream<>True
it=WSH.StdIn.ReadLine
oldbase=fso.GetBaseName(it)
ext=fso.GetExtensionName(it)
Ifext<>""Then
ext="."&ext
EndIf
newbase=replace(oldbase,delword,"",1,-1,1)
Ifoldbase<>newbaseThen
WSH.StdErr.WriteLineit&"-->"&newbase&ext
EndIf
Loop
*/