@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
cd "C:\Documents and Settings\John\Desktop\New\Interest\f2"
Pushd "C:\Documents and Settings\John\Desktop\New\Interest\f2"
Set Line#=26
Set /A LOfs=24 -1, Len=34 - LOfs
For %%A in (*.txt) do For /F "tokens=1* delims=:" %%B in (
'Findstr /N ".*" "%%A" ^|Findstr "^%Line#%:"'
) do if %errorlevel% == 0 Set "Line=%%C"&Ren "%%~fA" "!Line:~%LOfs%,%Len%! - %%A!""
Popd
在上面我试图改变文件的文件名在文件中的某个位置。批处理文件重命名目录中的文本文件从文本文件中的文本文件在特定的行除外如果行空白
如果第26行为空,则不做任何操作,也不要更改文件名。
我在某个地方出了问题,正在圈圈。
任何人都可以帮忙吗?
谢谢。
为什么在'do'条件结尾处有两个引号?这会将ren命令设置为'line'变量值。 – npocmaka
你期待'ErrorLevel%== 0'接收到什么'ErrorLevel'? 'findstr'之一?这是行不通的,因为'findstr'是在新的'cmd'实例中由'for/F'执行的。另外,您需要[延迟扩展](http://ss64.com/nt/delayedexpansion.html)用于'!ErrorLevel!';或者,你可以使用'如果不是ErrorLevel 1'。无论如何,因为无论如何你都在过滤第26行,毕竟你可能不需要任何'if' /'ErrorLevel'查询。 'ren'命令行后面有一个''''但是,你应该提供一个例子,并且你应该描述实际发生的事情... – aschipfl
我认为**如果%ErrorLevel%== 0 **会如果发现** Findstr/N“*”“%% A”^ | Findstr“^%Line#%:**不是空行。 – jaburmester