ファイル・ディレクトリ移動削除




ATTRIB − ファイル属性の変更


ここではsub.vbsというファイルにReadOnlyの属性を加えてみる。

<BAT>
attrib +r sub.vbs

<VBS>
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile("sub.vbs")
f.Attributes = f.Attributes + 1 ' 1=ReadOnly

<JS>
fs = WScript.CreateObject("Scripting.FileSystemObject");
f = fs.GetFile("sub.vbs");
f.Attributes += 1   // 1=ReadOnly

「+」により属性を加え、「-」により属性をはずすことができる。
Attributes に設定可能な値を以下に示す。

0標準ファイル
1読み取り専用ファイル
2隠しファイル
4システムファイル
8ディスクドライブボリュームラベル(*)
16フォルダ(*)
32アーカイブ属性
64リンクまたはショートカット(*)
128圧縮ファイル(*)
(*)は値の取得のみが可能



CD(CHDIR) − カレントディレクトリの表示


<BAT>
cd  

<VBS>
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(".")
WScript.Echo f.path

<VBS(5.6以降)>
Set shell = WScript.CreateObject("WScript.Shell")
WScript.Echo shell.CurrentDirectory

<JS>
fs = WScript.CreateObject("Scripting.FileSystemObject");
f = fs.GetFolder(".");
WScript.Echo(f.path);

<JS(5.6以降)>
shell = WScript.CreateObject("WScript.Shell");
WScript.Echo(shell.CurrentDirectory);



CD − カレントディレクトリの変更

WSHは5.6以降のみ。subというフォルダに移動後、empty.txtというファイルを作ってみる。

<BAT>
cd .\sub
type nul > empty.txt

<VBS>
Set shell = WScript.CreateObject("WScript.Shell")
shell.CurrentDirectory = ".\sub"

Set fs = WScript.CreateObject("Scripting.FileSystemObject")
fs.CreateTextFile "empty.txt"

<JS>
shell = WScript.CreateObject("WScript.Shell");
shell.CurrentDirectory = ".\\sub";

fs = WScript.CreateObject("Scripting.FileSystemObject");
fs.CreateTextFile("empty.txt");



COPY − ファイルの複写

現フォルダ内のすべてのファイルを、サブフォルダsubに複写。

<BAT>
copy "*.*" .\sub

<VBS>
Set f = CreateObject("Scripting.FileSystemObject")
f.CopyFile "*.*", ".\sub"

<JS>
f = WScript.CreateObject("Scripting.FileSystemObject");
f.CopyFile( "*.*", ".\\sub");



DEL(ERASE) − ファイルの削除

サブフォルダsub内のすべてのファイルを削除する。ゴミ箱に移動するわけではなくそのまま削除するので、十分注意すること。

<BAT>
del .\sub\*.*

<VBS>
Set f = WScript.CreateObject("Scripting.FileSystemObject")
f.DeleteFile ".\sub\*.*"

<JS>
f = WScript.CreateObject("Scripting.FileSystemObject");
f.DeleteFile(".\\sub\\*.*");

相対パスの指定に自信の無い人等は、ワイルドカード("*.*"など)は用いずに、具体的なファイル名("abc.txt"など)で練習すること。そうでないと重要なファイルをすべて削除してしまうおそれがある。



DELTREE − ディレクトリの削除

ゴミ箱に移動するわけではなくそのまま削除される。

<BAT> (deltreeコマンドは Windows 2000、 WindowsXP 等には存在しません。替わりにdelを利用します。)
deltree .\sub2  

<VBS>
Set f = WScript.CreateObject("Scripting.FileSystemObject")
f.DeleteFolder ".\sub2"

<JS>
f = WScript.CreateObject("Scripting.FileSystemObject");
f.DeleteFolder(".\\sub2");

相対パスの指定に自信の無い人等は、絶対パス指定(例:"C:\MyFiles\sub2"など)で削除すること。そうでないと重要なフォルダを削除してしまうおそれがある。



DIR − ディレクトリ一覧の表示

カレントディレクトリ内のファイル・フォルダ一覧を表示する。BAT版とWHS版は表示情報が異なる。

<BAT>
dir  

<VBS>
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set f = fs.getFolder(".")

For Each temp In f.SubFolders
    s = s & temp.Name & vbCrLf
Next

For Each temp In f.Files
    s = s & temp.Name & vbCrLf
Next

WScript.Echo s

<JS>
var s = "";
fs = WScript.CreateObject("Scripting.FileSystemObject");
f = fs.getFolder(".");

et = new Enumerator(f.SubFolders);
for(; !et.atEnd(); et.moveNext())
    s = s + et.item().Name + "\n";

et2 = new Enumerator(f.Files);
for(; !et2.atEnd(); et2.moveNext())
    s = s + et2.item().Name + "\n";

WScript.Echo(s);



MD(MKDIR) − ディレクトリの作成

<BAT>
md .\sub2  

<VBS>
Set f = WScript.CreateObject("Scripting.FileSystemObject")
f.CreateFolder ".\sub2\"

<JS>
f = WScript.CreateObject("Scripting.FileSystemObject");
f.CreateFolder(".\\sub2");



MOVE ファイルの移動

sub2フォルダ内のすべてのtxtファイルを、subフォルダに移動する。

<BAT>
move .\sub2\*.txt .\sub

<VBS>
Set f = WScript.CreateObject("Scripting.FileSystemObject")
f.MoveFile ".\sub2\*.txt", ".\sub"

<JS>
f = WScript.CreateObject("Scripting.FileSystemObject");
f.MoveFile(".\\sub2\\*.txt", ".\\sub");



PATH − 検索パスの表示


<BAT>
path  

<VBS>
Set list = WScript.CreateObject("WScript.Shell").Environment("PROCESS")
WScript.Echo list("PATH")

<JS>
list = WScript.CreateObject("WScript.Shell").Environment("PROCESS");
WScript.Echo( list("PATH") );



REN(RENAME) − ファイル名・ディレクトリ名の変更

カレントディレクトリの copy.js というファイルの名を test.js に変更する。

<BAT>
ren copy.js test.js

<VBS>
path = ".\copy.js"
nName = "test.js"
Set f = WScript.CreateObject("Scripting.FileSystemObject").getFile(path)
f.name = nName

<JS>
path = ".\\copy.js";
nName = "test.js";
f = WScript.CreateObject("Scripting.FileSystemObject").getFile(path);
f.name = nName;



XCOPY (XCOPY32) − ファイル・ディレクトリ構造の複写

カレントフォルダ内のファイルをサブフォルダ含めてすべて複写する。
K:\thisというフォルダ作り複写する。
CopyFolderではコピー元として、カレントフォルダを「"."」等と表すことはできないようなので、2行目のGetFolderを用いた。

<BAT>
xcopy "." K:\this\ /s

/sオプションをつけないと、サブフォルダがコピーされない。

<VBS>
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(".")
fs.CopyFolder f.path, "K:\this"

<JS>
fs = WScript.CreateObject("Scripting.FileSystemObject");
f = fs.GetFolder(".");
fs.CopyFolder(f.path, "K:\\this");


もくじへ

元のページに戻る

当Webページの一部または全部を筆者(saikawa)に無断で複写、複製、転載することを禁じます。