をfilenameに接頭辞として追加私はこのようなファイル/ディレクトリ構造を持っている:、Windowsのバッチファイルが
C:\Results\name1\run\string1\output.csv
C:\Results\name2\run\string2\output.csv
C:\Results\name3\run\string3\output.csv
...
私はその偉大でC:\Results
に各output.csv
をコピーしたいのですが-grandparentディレクトリ名はファイルに接頭辞として追加するので、私はこれを持っている:
C:\Results\name1output.csv
C:\Results\name2output.csv
C:\Results\name3output.csv
私は下記の投稿のようにバッチコードを使用しようとしているが、それはかなりありません。
(私は他のオンライン検索から一緒にこれを考え出すことを試みた。)
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir /A:D /S /B "C:\Results*"') do (
for %%y in ("%%a\*.csv") do (
call :GETPARENTPARENT "%%y" ret
echo ret=!ret!
move /Y "%%y" "!ret!"
pause
)
)
goto :EOF
:GETPARENTPARENT
set fileP=%1
echo received=%fileP%
for %%a in (%fileP%) do (
set parent=%%~dpa
cd !parent!\..\..
for /r %%a in (*.csv) do for %%b in ("%%~dpa\.")
do ren "%%~a" "%%~nxb%%~xa"
set gparent=%%~dpa
cd !gparent!\..
set PPPath=!cd!
for %%x in ("!PPPath!") do (
set "%~2=%%~dpnx"
)
)
goto :EOF
Cmd.exeシェルスクリプト(バッチファイル)は、DOSとは何の関係もありません。 –
「あまりない」とはどういう意味ですか?コードがクラッシュしますか? ( 'do'は' for'と同じ物理行になければなりません)、または期待どおりに動作しないようにする必要があります(同じ*メタ変数を使用する2つの 'for'文を入れ子にしようとすると、 %a') – Magoo
[DOSとcmdは異なります](https://superuser.com/q/451432/241386)。スクリプトがDOSで動作するはずの場合を除いて、DOSにタグを付けるべきではありません。 –