• 締切済み

コマンドプロンプト

コマンドプロンプトで下記の処理がしたいです。 複数のフォルダに同じファイル名(INDEX.txt)が存在しております。 フォルダA   INDEX.txt フォルダB   INDEX.txt ... フォルダZ   INDEX.txt INDEX.txtの中身以下の状態です。 (フォルダBならAの部分がB)  0001,フォルダA,  0002,フォルダA,  ...  0100,フォルダA, これに対して一括の処理で下記のように1行目に「0000」を書き加えたいです。  0000  0001,フォルダA,  0002,フォルダA,  ...  0100,フォルダA, どなたか、詳しい方お教え頂ければと思います。 宜しくお願い致します。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 ここは、Office 系ですから、あくまでも、その範囲で回答しておきます。なお、少し書き換えれば、Excel VBAでも実行可能です。(どちらかというと、そのほうが楽かもしれません) 以下のコードを、メモ帳に貼り付け、ファイル名を、SrchFOLD(任意)、拡張子を、.vbs と付けてください。このプログラムの置き場所は、index.txt ファイルの上にある、上位フォルダにおいてください。すべての下位にあるサブフォルダから、INDEX.TXtファイルをを探して、一行を加える処理をします。 現行では、「0000」と付けるだけですが、当然、「0000,フォルダA, 」というスタイルも可能です。エクスプローラなどから、クリックすればよいです。 なお、質問内容をみると、"0000"は、全角スペースが一つ入っているようですから、" 0000" に書き換えてもよいです。既に、0000と入っているものは、入れないというコードに書き換えることも可能です。 また、コマンドプロンプトの場合は、そのファイルがある場所で、>Wscript.exe srchFOLD として、実行(Enter)させれば、実行されます。 もちろん、MS-DOS ONLY なら、この方法はうまくいきませんし、質問のカテゴリそのものが違うことになります。 '--------------------------------------------------------- 'SrchFOLD.vbs Dim WshShell Dim CurDir Dim objFS Dim objFolders Dim sbfolder Dim objFile Dim objText Dim myText Dim i Const nFILE = "INDEX.TXT" Set WshShell = CreateObject("WScript.Shell") CurDir = WshShell.CurrentDirectory Set objFS = CreateObject("Scripting.FileSystemObject") Set objFolders = objFS.GetFolder(CurDir) For Each sbfolder In objFolders.SubFolders If objFS.FileExists(sbfolder & "\" & nFILE) Then Set objText = objFS.OpenTextFile(sbfolder.Path & "\" & nFILE) myText = objText.ReadAll objText.Close myText = "0000" & Chr(13) & Chr(10) & myText Set objText = objFS.CreateTextFile(sbfolder.Path & "\" & nFILE) objText.Write (myText) objText.Close i = i +1 End If Next MsgBox i &"個の"& nFILE &" の処理を行いました。" '---------------------------------------------------------

  • ann_dv
  • ベストアンサー率43% (528/1223)
回答No.2

コマンドプロンプトと言うよりはバッチファイルですね。 (いずれにしても、カテ違いな気がしますが。。) 全てのフォルダが同一フォルダ配下である事を前提として、 親フォルダ直下に以下の2つのバッチファイルを作成するのはいかがでしょうか。 (私もバッチの作成は不慣れなもので、もっと単純な方法がありそうな気がしてなりません。。) ===== [ main.bat ] ===== for %%A in (フォルダA フォルダB フォルダC ... フォルダZ) do call sub.bat %%A ===== [ main.bat ] ===== ===== [ sub.bat ] ===== cd %1 echo 0000 > INDEX.temp type INDEX.txt >> INDEX.temp del INDEX.txt ren INDEX.temp INDEX.txt cd .. ===== [ sub.bat ] ===== これでmain.batを起動すれば、期待通りの結果になるのではと思います。

  • dondoko4
  • ベストアンサー率12% (1161/9671)
回答No.1

DOSのことでしょうか。