人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

フォルダ・ファイル作成と操作をしてくれる.vbsを作成したいです。
毎回、名前や拡張子の異なる任意のファイル(例:ABC.wmv)を.vbsにドラッグすると、
ファイル名を共通項として以下の一連の操作を自動で行ってくれるようにしたいのですが、
構文を教えていただけますでしょうか。

1)ドラッグしたファイルと同名のフォルダを同階層に作成する(例:ABC(拡張子なし))
2)ABC.wmvをABCフォルダ内に移動
3)ABCフォルダ内に、ABC.txtを作成
4)ABC.txtの文中の特定部分に"ABC.wmv"と記述する

※手順3,4は統合しても構いません。(.txt作成時に4も指定してしまうと思われますが・・)
※ABC.txtの内容は以下です。"ABC.wmv"の部分だけ、ドラッグしたファイル名に差し変わるようにしたいです。

このフォルダは、 ←定型
"ABC.wmv" ←ドラッグしたファイル名が入る
を保管しています。 ←定型

●質問者: ggene
●カテゴリ:コンピュータ
✍キーワード:ABC txt VBS wmv ドラッグ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● mattn
●100ポイント

フォルダが既に存在していた場合などのエラー処理書いてないですが、こんな感じかと思います。

コメントを書くために結構冗長な書き方ですが、実際にはもう少し簡潔に書いて良いかと思います。

If WScript.Arguments.Count <> 1 Then
MsgBox("ファイル名を指定するか、ファイルをドロップして下さい")
WScript.Quit(0)
End If

Set fso = CreateObject("Scripting.FileSystemObject")
file = WScript.Arguments(0)

' ファイルのパス部分のみ取得する
base = fso.GetParentFolderName(file)
If Len(base) = 0 Then
' コマンドラインから相対パスで指定した場合用のおまじない
base = "."
End If
' ファイルの拡張子を抜いたファイル名部分を取得する
name = fso.GetBaseName(file)

' フォルダ名を作成する
path = base & "\" & name

' フォルダを作る
Call fso.CreateFolder(path)

' 移動先のファイル名を作成する
file_to = path & "\" & fso.GetFileName(file)

' ファイルを移動する
Call fso.MoveFile(file, file_to)

' テキストファイルを作りストリームを取得する
Set stm = fso.CreateTextFile(path & "\" & name & ".txt", true)

' 書き込む内容を作成する
line = fso.GetFileName(file)

' ファイルに書き込む
stm.WriteLine(line)

' ファイルストリームを閉じる
Call stm.Close()

' 後片付け
Set stm = Nothing
Set fso = Nothing
◎質問者からの返答

すばらしいご回答をありがとうございます。

調べたのですが断念したので、重ねて質問させてください。

作成されたtxtの内容は以下の3行のようにしたいと思い、

line = fso.GetFileName(file)のあたりに色々な記述をしてみたのですが、ダメでした。

構文をお教え願えますでしょうか。

1行目:このフォルダは、 ←定型

2行目:"ABC.wmv" ←ドラッグしたファイル名が入る(お教えいただいた通りでした)

3行目:を保管しています。 ←定型


2 ● foobar_777
●100ポイント ベストアンサー

line=の行の下に以下の行を追加すればよいです。

line="このフォルダは"& vbCrLf & line & vbCrLf & "を保管しています。"



ちなみにvbsを使わなくて,バッチファイルでも同様のことが出来ます。

----- test.bat ここから -----

@echo off

REM 1)ドラッグしたファイルと同名のフォルダを同階層に作成する(例:ABC(拡張子なし))

mkdir "%~dpn1"


REM 2)ABC.wmvをABCフォルダ内に移動

move %1 "%~dpn1"


REM 3)ABCフォルダ内に、ABC.txtを作成

REM 4)ABC.txtの文中の特定部分に"ABC.wmv"と記述する

echo このフォルダは、> "%~dpn1\%~n1.txt"

echo %~nx1 >> "%~dpn1\%~n1.txt"

echo を保管しています。>> "%~dpn1\%~n1.txt"

----- test.bat ここまで -----



%~なんとかの部分の解説は スタート→ヘルプとサポート→for で検索して Forのヘルプを参照すると書いてあります。

%1: 第1引数

d: ドライブ名

p: パス名

n: 拡張子なしファイル名

x: 拡張子


ファイルと同名のフォルダ:ドライブ+パス+ファイル名 = %~dpn1

ABCフォルダ内のABC.txt: ドライブ+パス+ファイル名¥ファイル名.txt = %~dpn1\%~n1.txt

◎質問者からの返答

ご回答ありがとうございます。

実のところバッチファイルの作成も挑戦していたのですが、ドラッグ&ドロップで頓挫してあきらめていました。

コマンドプロンプトであれば、私のスキルでもファイル名を変えたりフォルダをどこかに移動したりという

この先の目的が達成できそうですので、お教えいただいて非常に非常に助かりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ