バッチスクリプトでフルパスからファイル名を分割するにはどうすればよいですか?フルパスからファイル名をバッチで分割する方法は?
答えて
@echo off
Set filename=C:\Documents and Settings\All Users\Desktop\Dostips.cmd
For %%A in ("%filename%") do (
Set Folder=%%~dpA
Set Name=%%~nxA
)
echo.Folder is: %Folder%
echo.Name is: %Name%
しかし、私はこのために信用を取ることはできません。
がcd c:\test\folder A
for %X in (*)do echo %~nxX
(desktop.iniをのような特別なファイルに注意してください:Googleは、例えば、CMDウィンドウに直接それを行う単一%
を使用するように、上記のピートの例から引き続きhttp://www.dostips.com/forum/viewtopic.php?f=3&t=409
おかげ!これも私のために働いた。私は、ファイルからフォルダのリストを読み込み、それらをフォーマットしています。私はこれを使いました: "for/F" tokens = 1 delims = "%% A in(list_of_files.txt)do(" –
ファイル名を取得する方法を示すのがいいかもしれません。(拡張子なし) – Vaccano
%〜 nI - %Iをファイル名のみに展開する< - DOSから直接取り出して "-help"を出力する –
バッチファイルについてはそれほどよく分かりませんが、あらかじめ作成されたバッチファイルをホームディレクトリからパスにコピーして、ファイル名のリストを返すことはできません名?
あらかじめ作成されたバッチファイルの作成に役立つと思われるリンクがあります。
@echo off
Set filename="C:\Documents and Settings\All Users\Desktop\Dostips.cmd"
call :expand %filename%
:expand
set filename=%~nx1
echo The name of the file is %filename%
set folder=%~dp1
echo It's path is %folder%
でこれを見つけました表示されません)
それは>>
を使用して出力をファイルにリダイレクトすることも可能です:。
、フォルダ-B(非再帰的)にフォルダ-Aからすべてのファイルをrobocopyをしたいと仮定すると:
cd c:\test\folder A for %X in (*)do robocopy . "c:\test\folder B" "%~nxX" /dcopy:dat /copyall /v>>c:\test\output.txt
、すべてのフォルダ(再帰的に)のために:
cd c:\test\folder A for /d %X in (*)do robocopy "%X" "C:\test\folder B\%X" /e /copyall /dcopy:dat /v>>c:\test\output2.txt
これらの手法をrobocopyで使用すると、ソースディレクトリの最後のバックスラッシュを削除することを覚えておく必要があります。ソースとして '%〜dpX'を使用した例があれば便利です。 – Annan
完全修飾パス名からファイル名を解析し(例えば、C:\一時\のmy.bat)任意の構成要素(例えば、FILE.EXT)へ。
単一のコード行:
For %%A in ("C:\Folder1\Folder2\File.ext") do (echo %%~fA)
あなたが "C:\ Folder1に\フォルダ2 \ FILE.EXT" アウトに変更することができます任意のフルパスおよび変更のための "%%〜fAとを" "for /?"を実行すると他のオプションのいずれかが見つかります。コマンドプロンプトで確認します。
精緻コード
set "filename=C:\Folder1\Folder2\File.ext"
For %%A in ("%filename%") do (
echo full path: %%~fA
echo directory: %%~dA
echo path: %%~pA
echo file name only: %%~nA
echo extension only: %%~xA
echo expanded path with short names: %%~sA
echo attributes: %%~aA
echo date and time: %%~tA
echo size: %%~zA
echo drive + path: %%~dpA
echo name.ext: %%~nxA
echo full path + short name: %%~fsA)
スタンドアロンバッチスクリプト
保存Cのように:\ CMD \ ParseFn.cmd。
はCを追加:\ cmdをごPATH環境変数に、あなたのすべての再利用可能なバッチスクリプトを保存するためにそれを使用します。
@echo off
@echo ::___________________________________________________________________::
@echo :: ::
@echo :: ParseFn ::
@echo :: ::
@echo :: Chris Advena ::
@echo ::___________________________________________________________________::
@echo.
::
:: Process arguements
::
if "%~1%"=="/?" goto help
if "%~1%"=="" goto help
if "%~2%"=="/?" goto help
if "%~2%"=="" (
echo !!! Error: ParseFn requires two inputs. !!!
goto help)
set in=%~1%
set out=%~2%
:: echo "%in:~3,1%" "%in:~0,1%"
if "%in:~3,1%"=="" (
if "%in:~0,1%"=="/" (
set in=%~2%
set out=%~1%)
)
::
:: Parse filename
::
set "ret="
For %%A in ("%in%") do (
if "%out%"=="/f" (set ret=%%~fA)
if "%out%"=="/d" (set ret=%%~dA)
if "%out%"=="/p" (set ret=%%~pA)
if "%out%"=="/n" (set ret=%%~nA)
if "%out%"=="/x" (set ret=%%~xA)
if "%out%"=="/s" (set ret=%%~sA)
if "%out%"=="/a" (set ret=%%~aA)
if "%out%"=="/t" (set ret=%%~tA)
if "%out%"=="/z" (set ret=%%~zA)
if "%out%"=="/dp" (set ret=%%~dpA)
if "%out%"=="/nx" (set ret=%%~nxA)
if "%out%"=="/fs" (set ret=%%~fsA)
)
echo ParseFn result: %ret%
echo.
goto end
:help
@echo off
:: @echo ::___________________________________________________________________::
:: @echo :: ::
:: @echo :: ParseFn Help ::
:: @echo :: ::
:: @echo :: Chris Advena ::
:: @echo ::___________________________________________________________________::
@echo.
@echo ParseFn parses a fully qualified path name (e.g., c:\temp\my.bat)
@echo into the requested component, such as drive, path, filename,
@echo extenstion, etc.
@echo.
@echo Syntax: /switch filename
@echo where,
@echo filename is a fully qualified path name including drive,
@echo folder(s), file name, and extension
@echo.
@echo Select only one switch:
@echo /f - fully qualified path name
@echo /d - drive letter only
@echo /p - path only
@echo /n - file name only
@echo /x - extension only
@echo /s - expanded path contains short names only
@echo /a - attributes of file
@echo /t - date/time of file
@echo /z - size of file
@echo /dp - drive + path
@echo /nx - file name + extension
@echo /fs - full path + short name
@echo.
:end
:: @echo ::___________________________________________________________________::
:: @echo :: ::
:: @echo :: ParseFn finished ::
:: @echo ::___________________________________________________________________::
:: @echo.
[変数からバッチ抽出パスとファイル名]の
- 1. exeファイルのフルパスからInnosetupスクリプトのexeファイル名を取得する方法は?
- 2. ファイルのフルパスからファイル名を取得するには、vC++で?
- 3. フルパスでファイル名
- 4. Springバッチでリソース(itemReader)からファイル名を取得する方法は?
- 5. 変数をバッチで配列に分割する方法
- 6. フルパスでファイルを開く方法は?
- 7. Pythonでファイルを分割する方法
- 8. バッチ:部分名が同じファイルをサブフォルダから別のファイルにコピーする
- 9. pythonのテンソルでバッチを分割する
- 10. ファイル名をPythonで分割する
- 11. TensorFlow:トレーニングデータセットをバッチに分割するかどうかを判断する方法
- 12. ファイル名をベースと拡張子に分割する方法
- 13. フルパスでファイル名と一致するgrep
- 14. pythonで異なる文字でパスからファイル名を分割する方法は?
- 15. jekyllのmarkdownファイルからコンテンツを分割する方法
- 16. ファイルから値を分割する方法
- 17. グラブファイル名のみフルパスから
- 18. 行数でバッチ分割テキストファイル
- 19. PowerShellで文字列を分割してファイル名を変更する方法は?
- 20. UEFIでフルパスでファイルを開く方法
- 21. 数字を '。'から分けて分割する方法は?
- 22. JSPでファイルタイプからフルパスを取得する方法は?
- 23. RTFファイルを分割する方法
- 24. Rでボックスプロットを分割または分割する方法は?
- 25. JSONオブジェクトをバッチに分割するNode.js
- 26. Tensorflowトレーニングデータをバッチに分割する
- 27. txtファイルからデータを分割する
- 28. はフルパス名
- 29. Arangodb/Foxx異なるファイルでルートを分割する方法は?
- 30. phpのファイル名を配列(key => value)に分割する方法は?
可能重複(http://stackoverflow.com/questions/15567809/batch-extract-path-and-filename-from-a-variable) – Gab