我做了批处理文件,复制3个文件,需要删除最后33个字符重命名。该副本工作正常,但删除了最后33个字符...我在网上看到了一个以上的答案并尝试了所有但到目前为止没有任何工作。
我的批处理文件如下所示:
for /f "delims=" %%i in ("my folder") do (
ren "%%i" "%i:~0,-33%".txt
)
我已经尝试过了:
set fName=%%i
ren "%fName%" "%fName:~0,-33%.txt"
答案 0 :(得分:0)
以下是您要运行的批处理文件:
@echo off
Setlocal EnableDelayedExpansion
@for /f "delims=" %%i in ('dir /b *.txt') do (
set fname=%%~ni
set fname=!fname:~0,-33!.txt
ren "%%i" "!fname!"
)
endlocal
答案 1 :(得分:0)
根据我在这里获得的信息,试试这个:
@echo off
setlocal enabledelayedexpansion
set "folderpath=[Your Folder Here...]"
cd %folderpath%
for /f %%a in ('dir /b "*.txt"') do (
set "fname=%%~na"
ren "%%a" "!fname:~0,-33!.txt"
)
endlocal
这与上面的答案类似。您应确保批处理文件位于文件夹的外部。
修改强> 处理FOR和IF中形成的变量时,使用延迟扩展(即!var!,而不是%var%)。无论如何,这是固定代码:
@echo off
setlocal enabledelayedexpansion
::NO Last Backslash...
set "sourcepath=C:\Users\tzahi.k\Desktop\testSource\source2"
set "folderpath=C:\Users\tzahi.k\Desktop\testSource\des"
for /F "delims=" %%a in ('dir /b /od "%sourcepath%\*.txt"') do (
set "youngest=%%a"
xcopy /y "%sourcepath%\!youngest!" "%folderpath%"
)
cd /d %folderpath%
for /f %%a in ('dir /b "*.txt"') do (
set "fname=%%~na"
ren "%%a" "!fname:~0,-33!.txt"
)
endlocal
pause
答案 2 :(得分:0)
这应该有效
@echo off
setlocal enabledelayedexpansion
set FOLDER_PATH=C:\Some\Path\
for %%f in (%FOLDER_PATH%*) do if %%f neq %~nx0 (
set "filename=%%~nf"
ren "%%f" "!filename:~0,-33!%%~xf"
)
PAUSE
或者更好的
@echo off & setLocal enableDELAYedeXpansion
for /f "tokens=* delims= " %%a in ('dir /b *.txt') do (
set F=%%~Na
set F=!F:~0,33!
move /y "%%a" "!F!%%~Xa"
)