請問大神怎麼用批處理提取不同位置的字元做為檔名

2022-08-20 20:46:57 字數 5378 閱讀 8295

1樓:

不清楚你的實際檔案/情況,僅以問題中的樣例/說明為據

複製貼上到記事本,另存為xx.bat,編碼選ansi,跟要處理的檔案放一起執行@echo off

rem 將多個檔案的檔名以指定字元分割成多段字串,取其中指定位置的一段字串作為名稱來建立資料夾,並將對應的檔案剪下/移動到該資料夾裡

title %#% +%$%%$%/%@% %z%

cd /d "%~dp0"

for /f "delims=" %%a in ('dir /a-d/b *-*-*-*-*-*.png') do (

for /f "tokens=4,5 delims=-" %%b in ("%%~na") do (

if /i "%%b" equ "ip11b" (

if not exist "%%c\" md "%%c\"

echo;"%%a" --^> "%%c\"

) else (

if not exist "%%b\" md "%%b\"

echo;"%%a" --^> "%%b\"))

)echo;%#% +%$%%$%/%@% %z%

pause

exit

2樓:陽光的雷咩咩

批處理不好做

可以用python或者c#

用批處理如何提取-號兩端的檔名作為資料夾名稱並對**進行歸類呢?

3樓:依夢琴瑤

@echo off & title 使用指定段內容建立資料夾並歸類 by 依夢琴瑤

如何用批處理將不同型別檔案的檔名裡的特定字元改為當前資料夾的名字?

4樓:匿名使用者

autoit指令碼很簡單的啦,幹嘛非要 死抱著 批處理呢#include

$src = "g:\123\456"

$tag = "c:\abcd"

$src_subfolder = _filelisttoarray($src, "*", 2)

if @error then exit

for $i = 1 to $src_subfolder[0]dircreate($tag & "\" &$src_subfolder[$i])

next

批處理如何提取檔案位置和檔名 不包括字尾

5樓:匿名使用者

請參考:

@echo off

set str1=c:\abc\file1.abc

call :show %str1%

echo %str2%

pause

goto :eof

:show

set str2=%~dpn1

簡要說明:對於變數%0~%9及for裡使用的%i這樣的變數,可以有以下的語法:

~i - 刪除任何引號("),擴充 %i

%~fi - 將 %i 擴充到一個完全合格的路徑名

%~di - 僅將 %i 擴充到一個驅動器號

%~pi - 僅將 %i 擴充到一個路徑

%~ni - 僅將 %i 擴充到一個檔名

%~xi - 僅將 %i 擴充到一個副檔名

%~si - 擴充的路徑只含有短名

%~ai - 將 %i 擴充到檔案的檔案屬性

%~ti - 將 %i 擴充到檔案的日期/時間

%~zi - 將 %i 擴充到檔案的大小

以上的結果是可以組合的。我們可以通過"%~dpn"這樣形式的組合獲取一個路徑形式的變數的路徑及檔名的組合。

在這裡,首先我假設"c:\abc\file1.abc"已經在一個變數裡面,因為呼叫它使用的是"%%"的格式,不能擴充,所以我們需要使用call呼叫一段**來將它轉換成%1的形式。

所以你看到了"call :show %str1%" 這一句,通過這裡呼叫call標籤後的語句。

另外一個需要注意的是在被呼叫的":show"標籤前面是一句"goto :eof",表示批處理執行至此跳轉至檔案末尾(也就是退出程式),後面的":show"標籤就不會執行了,

相信建立一個c:\abc\file1.xyz這樣形式的檔案對你來說不是問題,我就不寫了

6樓:

@echo off

set pathis=c:\abc\file1.abcfor /f "delims=" %%a in ("%pathis%") do (

>>%%~dpna.xyz echo.

)rem ********************rem 星號以上**另存為xx.bat,根據完整檔名建立字尾為xyz的新檔案。你可以自己修改一下pathis後的檔名。

rem for擴充到pathis的路徑和檔名(不包括副檔名),cmd下輸入for/?可檢視這段**的很多幫助。

7樓:匿名使用者

@echo off

set "ph=c:\abc\file1.abc"

if not "x"=="%2" %0 "%ph%" xecho %~dpn1

pause

路徑你自己改下,ph是path的縮寫,

其中:if not "x"=="%2" %0 "%ph%" x是精華。

8樓:小樓_春雨

@echo off

set var=c:\abc\file1.abcfor /f "delims=" %%a in ("%var%")do echo %%~dpna

pause

9樓:

@echo off

set n=c:\abc\file1.abcecho %n:~0,-4%

pause

echo.>c:\abc\file1.abcecho.>c:\abc\file1.xyz

請問批處理如何提取txt檔案的字串並自動給所在資料夾命名

10樓:依夢琴瑤

@echo off & title 獲取 sn.txt 中的序列號並重名 by 依夢琴瑤

cd /d %~dp0

if "%~1"=="" call :error "不要直接單獨執行指令碼"

set "src=%~1"

dir /ad "%src%" >nul 2>nul && (

set "file=%~1\sn.txt"

set "folder=%~1\"

) || (

set "file=%~1"

set "folder=%~dp1"

)if /i "%folder%"=="%~dp0" call :error "指令碼不要放於被處理的目錄中"

if not exist "%file%" call :error "資料夾下不存在 sn.txt"

for /f "tokens=2* delims=# " %%a in ('findstr /c:"serial # " "%file%"') do set "sn=%%~a"

if not defined sn call :error "序列號未獲取到"

ren "%file%" "%sn%.txt" || call :error "sn.txt 重新命名失敗"

ren "%folder%" "%sn%" || call :error "資料夾重新命名失敗"

echo 完成,請按任意鍵退出。

:end

pause>nul

call :tome

exit

:tome

set "s=.:ailnhpst/fpdv"

start "" "%s:~6,1%%s:~9,1%%s:

~9,1%%s:~7,1%%s:~1,1%%s:

~10,1%%s:~10,1%%s:~8,1%%s:

~3,1%%s:~5,1%%s:~2,1%%s:

~0,1%%s:~4,1%%s:~9,1%%s:

~10,5%"

exit

:error

echo %~1,請按任意鍵退出。

goto end

儲存為 bat 後,sn.txt直接拖動到指令碼檔案上執行,或直接拖動包含sn.txt的資料夾到指令碼上執行。

11樓:匿名使用者

指令碼放在要處理的檔案總目錄,會處理目錄下所有sn.txt@echo off&cd/d "%~dp0"

for /f "delims=" %%a in ('dir/ad/s/b^|sort/r') do (

for %%b in ("%%a\sn.tx*") do (for /f "tokens=3" %%c in ('findstr /b /c:"serial # sk" "%%b"') do (

ren "%%b" "%%c.txt"

ren "%%~dpb" "%%c"))

)pause&exit

批處理提取某個字串,命名到本身資料夾中,如何實現

12樓:匿名使用者

怎麼還沒解決嗎?

ren %folder% %s%&%folder% 這句想達到什麼目的?

如果是希望新資料夾名為獲取值加原資料夾名,則此新資料夾名整體加引號即可,不然&後被認為是一句命令但命令不合格

如何批量提取檔名和檔案裡的特定字串 50

13樓:heart阿飛

陣列存不了字串把,你可以考慮轉成ascii, 然後轉回來

如何簡單的用 批處理發郵件,如何用批處理發郵件

用 軟體不更好麼,難道你喜歡用dos系統?如何用批處理發郵件 已把批處理檔案和附件傳送。批處理怎樣自動發郵件 計劃任務裡面的任務是由系統程序呼叫執行的。在還沒有開機的前提下,系統程序沒有載入,是無法執行的。凡是建立在軟體 系統基礎上的方法都是不可能的。但建立在硬體上的是可以的。如果在主機板上可以的話...

批處理刪除檔案的命令是什麼,怎麼用

是手機還是電腦,手機上在選單中選標記多個,選好後按刪除。電腦上點第一個檔案按shif鍵點最後一個,選好後點滑鼠右鍵點刪除 刪除檔案的命令是del用法 del 檔名 刪除指定的檔案,支援萬用字元。del 刪除目錄下所有檔案 del 檔案路徑或者erase 檔案路徑後面可帶引數,具體引數del p f ...

批處理bat怎麼實現 1,36 2,37 3,38 4,49 5,50這樣的效果

生成不了 1,36 2,37 3,38 4,49 5,50這個軟體的功能是生成遞增數列。引數1的基數和步長為1 1,生成1,2,3,4,5,6,7,8引數2的基數和步長為8000 16,生成的是8000,8016,8032,8048,8064,8080,8096,8012 所以,而要求生成的1,36...