0

私は次のような構造を持っています

E:\X\Y\z\File1.dtsx
E:\X\Y\z\File2.dtsx
E:\X\M\z\File3.dtsx
E:\X\M\z\File4.dtsx...

.dtsx ファイルを含むフォルダーを反復処理し、その祖父母フォルダー名 [i,e] を取得します。この場合、「Y」と「M」を取得してから、フォルダーを Y -File1 として統合サービスにデプロイする必要があります。 File2 は、フォルダ 'M' File3 および File 4 と同様です。

------------------Folder y-----------
      --File1.
      --File2
------------------Folder m-----------
      --File3.
      --File4----

--など、つまり、祖父母フォルダー名はさまざまです --親フォルダーは一貫しています --グランドフォルダー名に応じて、sutoサブフォルダーの下にパッケージが存在します。グランドフォルダーを反復処理して .dtsx ファイルを取得する必要があり、それらをフォルダー名をグランドフォルダー名として統合サービスにデプロイする必要があります。

4

2 に答える 2

2

いい仕事ですdelayed expansion:

@echo OFF &SETLOCAL
SET LF=^


REM do not touch two empty lines
FOR /R "E:\X" %%a IN (*.dtsx) DO call:doit "%%~a"
goto:eof

:doit
SET "fpath=%~1"
SETLOCAL ENABLEDELAYEDEXPANSION
SET fpath=%fpath:\="!LF!"%
FOR %%b IN ("%fpath%") DO (
    SET "path2=!path1!"
    SET "path1=!fname!"
    SET "fname=%%~b"
)
ECHO file is "%fname%", father is "%path1%", grandfather is "%path2%".
ENDLOCAL
goto:eof
于 2013-07-03T07:11:36.637 に答える
2
@ECHO OFF
SETLOCAL
:: starting directory
SET "relroot=u:"
(
FOR /f "delims=" %%i IN ( 'dir /s /b /a-d "%relroot%\*.dtsx" ') DO (
 FOR /f "delims=" %%m IN ("%%~dpi.") DO (
  FOR /f "delims=" %%q IN ("%%~dpm.") DO (
   ECHO "%%~nxi" "%%~nq"
  )
 )
)
)>"%temp%\tempfile_name"
SORT "%temp%\tempfile_name" >"%temp%\tempfile_anothername"
GOTO :EOF

これがスターターです。

ファイル"%temp%\tempfile_name"には次の形式の行が含まれている必要があります

"file3.dtsx" "m"

ファイル"%temp%\tempfile_anothername"には、ファイル名のアルファベット順になるようにソートされたこれらの行が含まれている必要があります。

引用符が必要かどうか、要素のシーケンスが必要かどうか、必要な出力のシーケンスが必要かどうか、または"z"ディレクトリも必要かどうかがわからない (として利用可能%%~nm)


コメントに続く追記 20130703-1355Z

あら!混乱が収まる!

Stackexchange の定期的な受信トレイ通知には、投稿されたコメントのごく一部が含まれており、2 つの連続したレポートを読んでいます。

... ,D:\Folder 1\SubFolder1\SubFolder2_SubFolder3\SubFolder4\Entity\Folder\File1_1.dtsx;

... D:\Data Migration\DX\AE_Deployment_SAT\20-Interfaces\Flex Att Per

しかし、これらのうちの 2 番目は、現在利用可能なコメントには表示されません。

これは、現在のコメントで報告されたファイルを作成するために使用したバッチです-ドライブ文字を編集しただけです-ナレーションEntityではなく、投稿されたままにしました:Entity1

@echo off
setlocal
del /s u:\*.dtsx
md "U:\Folder 1\SubFolder1\SubFolder2_SubFolder3\SubFolder4\Entity\Folder" 2>nul
md "U:\Folder 1\SubFolder1\SubFolder2_SubFolder3\SubFolder4\Entity1\Folder" 2>nul
md "U:\Folder 1\SubFolder1\SubFolder2_SubFolder3\SubFolder4\Entity2\Folder" 2>nul
copy nul "U:\Folder 1\SubFolder1\SubFolder2_SubFolder3\SubFolder4\Entity\Folder\File1_1.dtsx
copy nul "U:\Folder 1\SubFolder1\SubFolder2_SubFolder3\SubFolder4\Entity1\Folder\File1_2.dtsx"
copy nul "U:\Folder 1\SubFolder1\SubFolder2_SubFolder3\SubFolder4\Entity2\Folder\File1_3.dtsx"
copy nul "U:\Folder 1\SubFolder1\SubFolder2_SubFolder3\SubFolder4\Entity2\Folder\File1_4.dtsx"
dir/s u:\*.dtsx

結果:

u:\Folder 1\SubFolder1\SubFolder2_SubFolder3\SubFolder4\Entity\Folder\File1_1.dtsx
u:\Folder 1\SubFolder1\SubFolder2_SubFolder3\SubFolder4\Entity1\Folder\File1_2.dtsx
u:\Folder 1\SubFolder1\SubFolder2_SubFolder3\SubFolder4\Entity2\Folder\File1_3.dtsx
u:\Folder 1\SubFolder1\SubFolder2_SubFolder3\SubFolder4\Entity2\Folder\File1_4.dtsx

最初に投稿したバッチを実行して、修正を加え"%%~nm"て行に追加しますECHO

...
SORT "%temp%\tempfile_name" >"%temp%\tempfile_anothername"
type "%temp%\tempfile_name" 
echo================================
TYPE "%temp%\tempfile_anothername"
GOTO :EOF

結果は次のとおりです。

"File1_1.dtsx" "Entity" "Folder"
"File1_2.dtsx" "Entity1" "Folder"
"File1_3.dtsx" "Entity2" "Folder"
"File1_4.dtsx" "Entity2" "Folder"
===============================
"File1_1.dtsx" "Entity" "Folder"
"File1_2.dtsx" "Entity1" "Folder"
"File1_3.dtsx" "Entity2" "Folder"
"File1_4.dtsx" "Entity2" "Folder"

だから - 私のために働く。実際に何を作成したいのかわかりません。残念ながら、結果を検閲しているようです。私はあなたが提供したデータでしか作業できません... :(

于 2013-07-03T06:32:35.550 に答える