要想都改变,您就得在for中进行循环操作,而不是利用for把内容都先set一遍,这样只会得到最后一次set后的变量。
正确的写法是
@echo offsetlocal enabledelayedexpansionfor /f %%i in (123.txt) do ( set bin=%%i echo !bin:~1!>>new.txt)