好的我试图从我正在使用此脚本的文件中删除前两个字符。
@echo off
Set "InputFile=C:\New Folder\test.txt"
Set "OutputFile=C:\New Folder\New\test.txt"
setLocal EnableDelayedExpansion > "%OutputFile%"
for /f "usebackq tokens=* delims= " %%a in ("%InputFile%") do (
set s=%%a
>> "%OutputFile%" echo.!s:~2!
)
如果我使用正确的名称,那就完美了。我需要做的是使用一个狂野的字符,因为每次文件的名称都不同。尝试这个时它不起作用。
@echo off
Set "InputFile=C:\New Folder\H*.txt"
Set "OutputFile=C:\New Folder\New\H*.txt"
setLocal EnableDelayedExpansion > "%OutputFile%"
for /f "usebackq tokens=* delims= " %%a in ("%InputFile%") do (
set s=%%a
>> "%OutputFile%" echo.!s:~2!
)
答案 0 :(得分:0)
来自
星号是一个通配符,将匹配多个字符,但是 将仅从字符串的最开头匹配所有内容。不 在中间,而不是从结束。
有用的搜索:
* X
*你好吗?上述两个搜索可以匹配。第一个将匹配所有内容,包括它运行的第一个“x”。 第二个将匹配包括第一个在内的所有内容 “你好吗?”它找到了。合法但无用的搜索:
x * Hello * One 3以上三次搜索永远不会匹配。 奇怪的是,它们也是合法的,不会造成任何错误。一个例外: 你好和x *将自己匹配,但只有它们是真的 字符串的开头。 (谢谢杰布!)
答案 1 :(得分:0)
周围的for
- 循环执行通配符处理(提供完全限定的文件名)
@echo off
for /f %%i in ('dir /b C:\New Folder\H*.*') do (
echo processing %%i
Set "InputFile=C:\New Folder\%%i"
Set "OutputFile=C:\New Folder\New\%%i"
setLocal EnableDelayedExpansion > "%OutputFile%"
for /f "usebackq tokens=* delims= " %%a in ("%InputFile%") do (
set s=%%a
>> "%OutputFile%" echo.!s:~2!
)
endlocal
)
注意:如果这些文件中有多行,则会从每行* 中删除前两个字符。