2014-01-15 71 views
0

ok我正在尝试从我使用此脚本的文件中除去前两个字符。批处理文件中的Set命令中使用通配符

@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

这将删除文件中每行的前两个字符。这是你想要的吗? – Stephan

回答

0

I'd like to use a wildcard with the SET command in Windows Batch so I don't have to know exactly what is in the string in order to match it

星号是一个通配符和匹配多个字符,但 将只匹配一切从字符串的开始。在中间不是 ,而不是从最后。

有用的搜索:

* X
*你怎么样?以上两项搜索可以匹配。第一个匹配所有内容,包括它所运行的第一个“x”。 第二个将匹配一切,包括第一个 “你好吗?”它发现。

法律,但无用,搜索:

X *您好*一三个以上三种搜索永远无法匹配。 奇怪他们也是合法的,并且不会导致错误。有一个例外: 你好和x *会匹配自己,但只有当它们是字符串的非常开始的 时。 (感谢杰布!)

0

周边for -loop没有(充分合格的文件名)

@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 
) 

注意通配符处理:如果你有这些文件多于一行,它将删除前两个字符来自每行*

相关问题