1

フルパス文字列からファイル名を取得する関数を作成しました。しかし、私が書いたサブルーチンは、実行に時間がかかりすぎます (約 4 秒)。その理由を理解しようとしています。

ここにバッチファイルがあります

@echo off
set fullPath=\\server\Dir1\Dir Number 2\Dir3\Dir4\abc.txt
echo %fullPath%
call:giveFileName "%fullPath%" finalName
echo After Function call fileName: %finalName% Good Job
goto:eof

:giveFileName
SETLOCAL
set fileName=%~nX1
::echo here is fileNmae %fileName%
(ENDLOCAL&set %~2=%fileName%
)
goto:eof
4

4 に答える 4

3

LOCATEの試みが行われていると思います\\server\Dir1\Dir Number 2\Dir3\Dir4\abc.txt

当然、そのサーバーを探すには費用がかかります。

を外す\\serverとかなり滑らかです。

于 2013-07-01T06:39:52.127 に答える
2

これを試すことができます(保証なしで!):

@echo off
set fullPath=\\server\Dir1\Dir Number 2\Dir3\Dir4\abc.txt
echo %fullPath%
call:giveFileName "%fullPath%" finalName
echo After Function call fileName: %finalName% Good Job
goto:eof

:giveFileName
SETLOCAL
set "fileName=%~1"
FOR /f %%a IN ('cmd /c "ECHO %fileName:\=&echo(%"') DO set "fileName=%%a"
(ENDLOCAL&set "%~2=%fileName%"
)
goto:eof
于 2013-07-01T08:16:32.920 に答える