㈠ 如何用批处理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
*/