• 締切済み

バッチファイルで連続 ハードリンクを作成するやり方

バッチファイルである特定のフォルダ内の特定のファイルのみ(大量に)をハードリンク化して指定したフォルダ内にハードリンクを作成させておきたい。 今作成したプロログラムは下記の通りなのですが なぜか上手くいきません。 一応ターゲットフォルダ内のデータは読み込んでいるようですが指定したフォルダ内に書き込む時のエラーかは分かりませんが「無効なパラメーターです」と表記されます。詳細は画像を見てください。 で。この操作を成立させるにはどうした命令を出したらいいのかアドバイスや例題・解説などあれば知恵をお貸しくださいませ。よろしくお願い申し上げます。ペコペコ ---------------------------------------------------------------- @echo off REM ループ処理 REM デスクトップステマニ一括変換フォルダからdwiファイルを指定する REM ターゲットフォルダ set targetDir=C:\Documents and Settings\ダウンロード専用\デスクトップ\ステマニ一括変換 REM ループ処理 for /f "usebackq delims==" %%D in (`dir /b /s "%targetDir%\*.dwi"`) do ( echo %%D fsutil hardlink crete "C:\Documents and Settings\ダウンロード専用\デスクトップ\テンポ解析テキスト\%%~nD" "%targetDir%\*.dwi" ) pause -------------------------------------------------------------------------------

みんなの回答

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.5

creteはtypoということなら、 > fsutil hardlink crete "C:\Documents and Settings\ダウンロード専用\デスクトップ\テンポ解析テキスト\%%~nD" "%targetDir%\*.dwi" ――の、「"%targetDir%\*.dwi"」がおかしいような。「%%D」だけでよいのでは。

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

「本見て参考にしながらしたのでできるかと思ったのですができないのでしょうか」て... 自分でコマンドを打つ気はないんですか? 「作成するハードリンク名がset targetDir=C:\Documents and Settings\ダウンロード専用\デスクトップ\ステマニ一括変換内の全ての.dwiのハードリンク元を順番に指定したフォルダ内に同じ名前にしたオリジナルハードリンクを一括で作れるようにしたい」って, 何をしたいかわからんのだけど. たとえば C:\Documents and Settings\ダウンロード専用\デスクトップ\ステマニ一括変換 というフォルダに「01曲名.dwi」「02曲名.dwi」「03曲名.dwi」「04曲名.dwi」という 4個のファイルがあるとしたら, 結果はどうなってほしいの?

ayabie3579jp
質問者

補足

自分でコマンドを打つ気はないんですか? 打ってますよ。インターネットで探したり、図書館行ったりしながら勉強して 自分でプログラム組んだりしてますが、どうしても分からなかったのでこの質問版を利用してプログラムの組み方についてアドバイスやこうした方がいいよ的なことを意見してもらえたら、大変ありがたいと思っています。 C:\Documents and Settings\ダウンロード専用\デスクトップ\ステマニ一括変換 というフォルダに「01曲名.dwi」「02曲名.dwi」「03曲名.dwi」「04曲名.dwi」という 4個のファイルがあるとしたら, 結果はどうなってほしいの?の回答ですが・・・ set targetDir=C:\Documents and Settings\ダウンロード専用\デスクトップ\ステマニ一括変換から*.dwiファイルを順番に読み込んで、 例)曲名1.dwi   曲名2.dwi   曲名3..dwi   曲名4.dwi   曲名5.dwi C:\Documents and Settings\ダウンロード専用\デスクトップ\テンポ解析テキストフォルダ内にハードリンク新規作成として 曲名1.lnk 曲名2.lnk 曲名3.lnk 曲名4.lnk 曲名5.lnk 的な感じで 曲名1.lnkのリンク先は曲名1.dwiのフルパスにあるといった感じのショートカットプログラムを作成させたいってことです。

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

fsutil は使ったことないんだけど, 例えば %D が C:\Documents and Settings\ダウンロード専用\デスクトップ\ステマニ一括変換\01曲名.dwi だとしたらそのコマンドは fsutil hardlink create "C:\Documents and Settings\ダウンロード専用\デスクトップ\テンポ解析テキスト\01曲名" "C:\Documents and Settings\ダウンロード専用\デスクトップ\ステマニ一括変換\*.dwi" ってことになるね. これ, コマンドプロンプトから実行できる?

ayabie3579jp
質問者

補足

本見て参考にしながらしたのでできるかと思ったのですができないのでしょうか? 本の内容は「」内表記します。 「INコマンドでは先にオリジナルのハードリンクを指定し、後に作成するハードリンクをしていします。それに対してfsutil hardlink create では先に作成するハードリンクを指定するように入れ替わっています。」 私の解釈ミスなのかな? 実際は作成するハードリンク名がset targetDir=C:\Documents and Settings\ダウンロード専用\デスクトップ\ステマニ一括変換内の全ての.dwiのハードリンク元を順番に指定したフォルダ内に同じ名前にしたオリジナルハードリンクを一括で作れるようにしたいと思っていましたので、プログラムの組み方に問題があるのでしょうか? 単独でのコマンド自体は間違ってないと思いますが、同じ処理を繰り返したりファイル名を同じようにしてハードリンクを作成させるためのバッチプログラムの組み方はなんとなくでつくってしまったので、その辺の詳しい解説などありましたらお手数をかけてしまい大変申し訳なく思いますが、教えてもらえないでしょうか。 よろしくお願い申し上げます。ペコペコ

全文を見る
すると、全ての回答が全文表示されます。
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

> fsutil hardlink crete もしかして「create」?

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「ターゲットフォルダ内のデータは読み込んでいる」ってどういう意味なんだろう. 実際にどのようなコマンドが実行されているのですか? それは正しいコマンドなのですか?

ayabie3579jp
質問者

補足

create ハードリンクの作成 C:\Documents and Settings\ダウンロード専用\デスクトップ\ステマニ一括変換\01曲名.dwi create は無効なパラメータです。 ---サポートされる HARDLINKコマンド--- create ハードリンクの作成 C:\Documents and Settings\ダウンロード専用\デスクトップ\ステマニ一括変換\01曲名.dwi create は無効なパラメータです。 ---サポートされる HARDLINKコマンド---create ハードリンクの作成 C:\Documents and Settings\ダウンロード専用\デスクトップ\ステマニ一括変換\02曲名.dwi create は無効なパラメータです。 ---サポートされる HARDLINKコマンド--- create ハードリンクの作成 C:\Documents and Settings\ダウンロード専用\デスクトップ\ステマニ一括変換\03曲名.dwi create は無効なパラメータです。 ---サポートされる HARDLINKコマンド---create ハードリンクの作成 create ハードリンクの作成 C:\Documents and Settings\ダウンロード専用\デスクトップ\ステマニ一括変換\04曲名.dwi create は無効なパラメータです。 ---サポートされる HARDLINKコマンド---create ハードリンクの作成 create ハードリンクの作成 C:\Documents and Settings\ダウンロード専用\デスクトップ\ステマニ一括変換\05曲名.dwi create は無効なパラメータです。 ---サポートされる HARDLINKコマンド---create ハードリンクの作成 とゆう感じで356曲名ぐらいまで同じコメントがかかれています。 原因はなんでしょう? インターネットでも色々探しているし、図書館の本にも載っていなかったため大変困っています。 補足になっていないかもしれませんが分かる方教えてくださいお願いします。。。 上記は実行後の結果です。 コマンドは質問した時に書いてあるとおりです。(fsutil hardlink creteは打ちミスでfsutil hardlink createの間違いでした。それ以外のコマンドは )

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • シンボリックリンク作成のバッチファイル

    親フォルダーに、aフォルダーとbフォルダーが入っています。 aフォルダー配下には、xフォルダーがあり、その中には複数のテキストファイルが入っています。 parent\a\x\test.txt parent\b\ 以下の様なバッチファイルを「送る」に登録しました。 @echo off rem 選択ディレクトリ配下のxディレクトリに移動 cd /D %1\x\ rem カレントディレクトリにあるすべてのファイルを、bディレクトリにコピー for %%i in (*.*) do ( copy "%%i" "..\..\b\" ) これにより、aフォルダーを選択してバッチファイルを実行すると、xフォルダー配下のテキストファイルがbフォルダーの中にコピーされることは確認しました。 ここで、コピーではなく、シンボリックリンク(mklink)を作成したいのですが、引数をどのように設定すればよいでしょうか。いろいろ試しましたがうまくいきませんでした。 ご教示よろしくお願いします。

  • バッチファイル作成について

    いつも参考にさせております。 バッチファイルで指定したディレクトリとそのディレクトリに含まれるサブディレクトリやファイルを全て削除したいと思っております。 例えば… 削除したいフォルダ:binフォルダ、objフォルダ フォルダ構成:C:\Documents and Settings\Kumagai\My Documents\Visual Studio 2005\Projects\WindowsApplication1 WindowsApplication1の直下にサブディレクトリが何個かありその直下にそれぞれbinフォルダ、objフォルダが存在します。 サブディレクトリが10個の場合binフォルダ、objフォルダもそれぞれ10個あるとします。 なおサブディレクトリの数は可変です。 この時、binフォルダとobjフォルダを一遍に削除するにはどのようにバッチファイルに記述すればよろしいのでしょうか? よろしければ教えてください。 環境はWindowXPですが、Vistaにも対応できるとなおうれしいです。

  • バックアップをバッチファイルでしたいのですが・・

    バッチファイルを作成して、バックアップを取る方法を考えています。 Cドライブのフォルダ内のあるフォルダを 外付けハードにバックアップする方法です。 XCOPY C:\C:\Documents and Settings\ユーザー名\*.* F:\Documents and Settings\ユーザー名\/S/D/Y と作成しましたが、うまく動きません。 どこが間違っているのでしょうか? また、本当は、外付けハードではなく、 同じストレージ内にバックアップを取れたらいいなって思ってます。 具体的には、CドライブもDドライブも バックアップはDドライブの『bkup』というフォルダに保存できたらな・・・と。 しかし、そのバッチファイルを作成しても なぜかうまくいきません。 こういうのは無理なのでしょうか? 初心者なもので、わかりやすく教えて頂きたいです。 宜しくお願いします。

  • DOSのバッチファイルでカレントフォルダを取得するには?

    現在バッチファイルにファイルをドラッグ&ドロップするとそのファイルを処理するようなバッチを組もうとしています。 おおまかな流れとして  1.ファイルのバックアップ  2.test.exeの引数にファイルのパスを渡す といった事をしたいのですが、バッチファイルにドラッグ&ドロップするとカレントフォルダがC:\Documents and Settings\user\になってしまいます。 バッチファイルのある場所をカレントフォルダとするにはどうすればよいのでしょうか。 以下カレントフォルダを確認した結果です。 OS:Windows2000 実行バッチのパス: C:\Documents and Settings\user\デスクトップ\test.bat ---test.bat---- @echo off cd pause test.bat直接起動 C:\Documents and Settings\user\デスクトップ test.batにファイルをD&D C:\Documents and Settings\user 伝わりづらくて申し訳ございません。 宜しくお願い致します。

  • バッチコマンドの for文の使い方。

    以下のバッチファイルはテキストを一行ずつ3つの変数に読み込み <subtest.bat>の処理を行うものです。 この2つのバッチファイルを一つにまとめたいのですがどうすればいいでしょうか。ただし、<subtest.bat>内は実際には10行程度の文です。 goto文を使用してみよとしたのですがうまくいきませんでした。 どなたかわかる方がいらっしゃいましたら、教えていただけないでしょうか、お願いいたします。 ------------------------------------------------ rem <test.bat> @echo off for /F "usebackq tokens=1-3" %%a in ( file.txt ) do call subtest.bat %%c,%%b,%%a PAUSE exit -------------------------------------------------- rem <subtest.bat> rem 変数の表示 rem 実際には10行程度の文です。 @echo %3, %2, %1 -------------------------------------------------- <file.txt>の内容(タブ区切り) shin0.bmp1000 200 shin1.bmp 700 200 shin2.bmp 800 200 shin3.bmp 860 200 shin4.bmp 400 200 --------------------------------------------------

  • 【バッチファイル】for繰り返しがうまくいかない

    バッチファイルの置いてあるフォルダ内(ついでにサブフォルダ内も)の 特定の拡張子(今回は.txt)ファイル全てを対象に (1)ある行ある列n文字目から2文字を読み込む×2 (2)読み込んだ文字をそのファイル名の先頭に追加 というバッチファイルを作りたいです。 具体例 テキストの中身↓ a.txt ○○○○ ○○○○ ○○○○ ○○○○ .... ○○○○ ○○○○ ○○○○ ○○○○ .... ○○○○ ○○○○ ○○○○ ○○○○ .... ○○○○ ○○○○ ○○○○ ○○○○ .... ○○○○ ○○○○ ○○○○ ○○○○ .... ○○○○ ○○xx ○○yy ○○○○ .... ○○○○ ○○○○ ○○○○ ○○○○ .... →ファイル名を「xxyya.txt」にしたい そこで素人ながら下記のようなバッチファイルを作成してみましたが、 フォルダ内にある1つ目のファイルに対してはうまく動くのですが 2つ目以降はリネーム出来ません。 フォルダ内すべての.txtファイルに実行するための 対処法がお分かりになれば、ご教授いただけると幸いです。 「rename.bat」 cd /d %~dp0 rem .txtファイルを列挙 for /f "usebackq tokens=*" %%i in (`dir /s /b *.txt`) do ( set name=%%~xni rem 特定の行列の文字列を抜き出して変数へ格納 for /f "skip=5 tokens=2,3" %%a in (%%i) do ( set front=%%a set back=%%b rem 7行目以降は不要なのでforから離脱 goto break ) :break rem 抜き出した文字列からさらに必要な文字を抜き出して変数へ set hed="%front:~2,2%%back:~2,2%" rem 元のファイル名へ追記 ren %name% %hed%%name% )

  • バッチファイル 複数条件判定方法

    いつも大変御世話になっております。 WindowsXP SP2に【D:\test\bat】フォルダに【test.bat】があります。 上記バッチファイルは以下のようになっています。 コード------------------------------------------------ rem --- フラグ変数 --- set OK=0 set NG=1 rem --- 初期化 --- set FLAG_A=%OK% set FLAG_B=%OK% rem --- 時間変数 --- set yyyy=%date:~-10,4% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set YMD=%date:~-8,10% set HHMMSS=%time:~0,8% set FILE_DATE=%date:~-10,4%%date:~-5,2%%date:~-2,2%%TIME:~0,2%%TIME:~3,2% set FILE_DATE=%FILE_DATE: =0% rem --- 存在ファイル格納フォルダ変数 --- set SERCH_DIR1=D:\sample1\ set SERCH_DIR2=D:\sample2\ rem --- ログフォルダ変数 --- set LOG_DIR1=D:\sampleLOG rem --- ログファイル変数 --- set LOG_FILE1=LOG.txt rem --- 検索対象ファイル変数 --- set SERCH_FILE1=sample1.txt set SERCH_FILE2=sample2.txt REM <STEP1> REM %SERCH_FILE1%存在チェック開始=============================================== echo %yyyy%%mm%/%dd% %HHMMSS% >> %LOG_DIR1%\%LOG_FILE1% IF EXIST %SERCH_DIR1%\%SERCH_FILE1% goto YES1 ECHO ON echo %SERCH_FILE1%が存在していません。調査して下さい。 >> %LOG_DIR1%\%LOG_FILE1% ECHO ON set FLAG_A=%NG% goto NEXT_SERCH_FILE :YES1 ECHO ON echo %SERCH_FILE1%が存在しています。 >> %LOG_DIR1%\%LOG_FILE1% ECHO OFF REM %SERCH_FILE1%存在チェック終了=============================================== PAUSE :NEXT_SERCH_FILE REM <STEP2> REM %SERCH_FILE2%存在チェック開始=============================================== echo %yyyy%%mm%/%dd% %HHMMSS% >> %LOG_DIR1%\%LOG_FILE1% IF EXIST %SERCH_DIR1%\%SERCH_FILE2% goto YES2 ECHO ON echo %SERCH_FILE2%が存在していません。調査して下さい。 >> %LOG_DIR1%\%LOG_FILE1% ECHO ON set FLAG_B=%NG% goto HANTEI :YES2 ECHO ON echo %SERCH_FILE2%が存在しています。 >> %LOG_DIR1%\%LOG_FILE1% ECHO OFF REM %SERCH_FILE2%存在チェック終了=============================================== PAUSE REM <終了処理>================================================================== :HANTEI ECHO ON echo %FLAG_A% >> %LOG_DIR1%\%LOG_FILE1% echo %FLAG_B% >> %LOG_DIR1%\%LOG_FILE1% PAUSE IF FLAG_A == %OK% IF FLAG_B == %OK% ( echo %yyyy%/%mm%/%dd% %HHMMSS% 正常終了 >> %LOG_DIR1%\%LOG_FILE1% ) ELSE ( echo %yyyy%/%mm%/%dd% %HHMMSS% 異常終了 >> %LOG_DIR1%\%LOG_FILE1% ) PAUSE コード------------------------------------------------ 一番最後の判定処理がうまく動作しません。 ※両フラグ(FLAG_AとFLAG_B)が0の時に正常終了のログをはきだし、どちらかが0ではない場合は異常終了のログをはきだす仕組みにしたいのです。 プログラムのどこに問題があるのでしょうか? バッチファイルにお詳しい方、ご教授願いますでしょうか? ※サンプルがあれば、光栄です。 何卒、宜しくお願い致します。

  • バッチファイル作成で困っています

    ルートディレクトリの直下に、たくさんのフォルダが存在し、 すべてのフォルダ名がyyyymmdd形式の日付になっています。 例えば c:\20211215 c:\20220123 c:\20220302 c:\20220419 c:\20220524 ちなみに、本日の日付を表すフォルダ名が一番数字が大きいものです。(つまり未来の日付のものはありません) バッチファイルに引数を入れて、引数で指定した数字以降のものだけ すべてc:\workの下にフォルダごとxcopyするバッチファイルは どう作れば良いのでしょうか。 例えば、引数が20220225ですと、上記の例ではxcopyの対象は c:\20220302 c:\20220419 c:\20220524 の3つになります。 for /d ループになるように思いますが、お知恵(サンプル)をいただきたく。

  • バッチファイルの使い方

    複数のフォルダの中にそれぞれいろんなファイルが入ってるとして、 別の1つフォルダやもともとファイルの入っていたフォルダの1つに一括の操作でファイルを集めるフリーツールはありますか? 同じファイル名のファイルがある場合は、(2)などで自動でリネームしてファイルを移動するかもとのフォルダに残すかどちらでもいいです。よろしくお願いします。 という質問に対し ----- ここから set $dist=c:\tmp set $logfile=%$dist%\log.txt for /r %%i in (*) do ( if exist "%$dist%\%%~nxi" ( echo 同じファイルが存在 echo %%i >> "%$logfile%" ) else move "%%i" "%$dist%\" ) set $logfile= set $dist= ---- ここまで 移動先は $dist で定義する。 同じファイルがあったときは移動しない。$logfile で定義したファイルに移動しなかったファイル名が残る。 移動元の一番上のディレクトリで実行する。 (後に別の方から「$dist->$dest」という返信もついていました) と回答があったのですが、具体的にどのように実行すればいいのでしょうか? テキストに「set~$dist=」まで貼り付けたのですが、どのような拡張子にすればいいのか、DOSプロンプトでどのように指定や実行をすればいいのか教えてほしいです。OSはVISTAです。お願いします。

  • バッチファイルの繰り返し処理プログラム

    ------------------------------------------------- @echo off for /d %%A in ( C:\Documents and Settings\ダウンロード専用\デスクトップ\mp3) do echo %%A START /D"I:\ゲーム\PCゲーム\ステップマニア\BTC (beat counter)\bpmcount\wavetone251" wavetone.exe %%A pause --------------------------------------------------- バッチファイルの繰り返し処理プログラムの書き方(組み方に)についての質問です 上記のようなプログラムを組み 特定のフォルダ内のファイルを1つずつ順番にある特定の実行プログラムに読み込むバッチファイルを作成しているのですが、なぜかファイルはあるのに読み込んでくれないためプログラムの組み方に詳しいベテランさんに質問します。 図書館の本やインターネットで独学して日々勉強はしているのですが、イマイチプログラムの組み方が分からずに詰まってしまっているため、この場をもって皆様方の丁寧なご指導やアドバイスをお待ちしております。 サンプルバッチ表記+解説付きなら大変ありがたいです。 よろしくお願い申し上げます。