从信息我到了这里,试试这个:
@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
另一个错误的尝试:在 集FOLDER_PATH = XXXX 为%%˚F (%FOLDER_PATH%*)do if %% f neq%〜nx0( set“filename = %%〜nf” ren“%% f”“!filename:〜0,-33!%%〜xf” ) 系统找不到指定的文件 –
再次执行'%fname%',但使用[delayed expansion](http://stackoverflow.com/questions/9681863/windows-batch-variables-wont-set)this时间。 – SomethingDark