如果真是这样。。。。试下下面的代码吧
@echo off&setlocal enabledelayedexpansion
for %%a in (*.txt) do (
set n=0
for /f "delims=" %%i in (%%a) do (
set/a n+=1
if !n! equ 1 set str=%%i&ren %%a !str:~0,10!.txt
)
)
pause
rem 如果行中有特殊字符会出错。。如果两个文件中的第一行的前10个字符一样,也会出错
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /s /b *.txt') do (
call :lp %%i
for /f "delims=" %%j in ('dir /s /b *.txt') do if "%%~nj"=="!name!" set name=!name!%random:~,1%
ren "%%~dpnxi" "!name!.txt"
)
echo 改名全部完成!
pause>nul&goto :eof
:lp
for /f "delims=" %%i in (%~dpnx1) do (
set a=%%i
if not "!a:~10!"=="" set name=!a:~,10!&goto :eof
)
[ Last edited by zw19750516 on 2008-5-7 at 10:09 PM ]
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /s /b *.txt') do (
set "name="
for /f "delims=" %%a in ('type "%%i"') do (
if not defined name set "name=%%a"
)
ren "%%i" "!name:~-10!%%~xi"
)
echo 改名全部完成!
pause>nul
Originally posted by pusofalse at 2008-5-7 07:08 PM:
但是文件内容大多开头都有空行,所以我想将搜寻内容定在前3行。。。。
----------------------------------------------
这句没看懂~~~
应该举个实例
比如 89u ...
Originally posted by shanyinwx at 2008-5-8 01:03 AM:
但是现在我又发现了一个问题:还有很多的文件内容在开头的几行是相同的,这样就只能命名一个文件,而其他的文件则不能改名,改怎么办,再次请 ...
如果存在重名的,就提取文件中第一行的前11个字符作为文件名,其他的仍是前10个。。。。
@echo off&setlocal enabledelayedexpansion
for %%a in (*.txt) do (
set n=0
for /f "delims=" %%i in (%%a) do (
set/a n+=1
if !n! equ 1 set str=%%i&ren %%a !str:~0,10!.txt>nul 2>nul || ren %%a !str:~0,11!.txt
)
)
pause
[ Last edited by pusofalse on 2008-5-8 at 01:39 AM ]
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b *.txt') do (
set n=0&set "name="
for /f "delims=" %%a in ('type "%%i"') do (
if not defined name set "name=%%a"
)
if exist "!name:~-10!%%~xi" (call :loop "%%i") else (
ren "%%i" "!name:~-10!%%~xi"
)
)
echo 改名全部完成!
pause>nul
exit
:loop
set /a n+=1
if exist "!name:~-10!%n%%~x1" goto loop
ren "%~1" "!name:~-10!%n%%~x1"
goto :eof