
菜鳥求助批處理for循環(huán)的問題有個地方不能理解昨天發(fā)了一個貼子,網(wǎng)友幫著解決了,非常感謝。夜里沒事又調試了一下(主要想再看下原來的思路究竟哪兒出錯誤了),發(fā)現(xiàn)還是有個地方解釋不了先說場景:我有一些文件想發(fā)給客戶,發(fā)完之后想在文件名前面加個標記,比如原文件是1111.txt,現(xiàn)在想改成mark1111.txt或者已發(fā)1111.txt,也就是常規(guī)的文件重命名。結果在調試的時候又發(fā)現(xiàn)一個文件重命名的代碼,不過它的目標和我的不一樣,它是把添加的內(nèi)容放在中間,比如原文件名是:1111.txt,它想改成:11mark11.txt思路是先提取前兩個字符,接著和mark拼接,再接著和串的剩余部分拼接,思路也很清晰明了。代碼如下:
代碼工作的沒有問題。看到這代碼,我就想把它前面的拼接順序改下:set a=!a!%flag% 改成:set a=%flag%!a!這樣不就實現(xiàn)目標了嗎?結果翻車了....發(fā)現(xiàn)for循環(huán)還是像以前一樣,多執(zhí)行了一次希望改成:mark1111.txt mark2222.txt結果:markmark1111.txt mark2222.txt所以就想問下,只是改了一個順序為什么差別這么大?我覺得里面肯定有啥細節(jié)沒有了解到,有懂的老哥指導下,謝謝nclick="copycode($('code0'));">復制代碼
- @echo off
- setlocal enabledelayedexpansion
- set flag=mark
- for %%i in (*.txt) do (
- set name=%%i
- set a=!name:~0,2!
- set b=!name:~2!
- set a=!a!%flag%
- set d=!a!!b!
- ren %%i !d!
- )
- pause

