ASPでフォルダーの存在を検出し、存在しない場合は自動的に作成する方法
2022-01-18 09:30:57
直接スクリプトホームテストを共有するために、通常のコードをテストするために使用することができ、マルチレベルのディレクトリの作成をサポートする
コード1
Function CreateMultiFolder(ByVal CFolder)
Dim objFSO, PhCreateFolder, CreateFolderArray, CreateFolder
Dim i, ii, CreateFolderSub, PhCreateFolderSub, BlInfo
BlInfo = False
CreateFolder = CFolder
On Error Resume Next
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
If Err Then
Err.Clear()
Exit Function
End If
If Right(CreateFolder, 1) = "/" Then
CreateFolder = Left(CreateFolder, Len(CreateFolder) - 1)
End If
CreateFolderArray = Split(CreateFolder, "/")
For i = 0 To UBound(CreateFolderArray)
CreateFolderSub = ""
For ii = 0 To i
CreateFolderSub = CreateFolderSub & CreateFolderArray(ii) & "/"
Next
PhCreateFolderSub = Server.MapPath(CreateFolderSub)
If Not objFSO.FolderExists(PhCreateFolderSub) Then
CreateFolder(PhCreateFolderSub)
End If
Next
If Err Then
Err.Clear()
Else
BlInfo = True
End If
CreateMultiFolder = BlInfo
End Function
使用方法
CreateMultiFolder("/202003/tools/")
コード2、テストOK
'Automatically create multipole directories
' code by jb51 reterry
function createit(path)
dim fsofo,cinfo,thepath,thepatharray
dim i,ii,binfo
binfo=false
thepath=path
set fsofo=createobject("scripting.filesystemobject")
if err then
err.clear
exit function
end if
thepath=replace(thepath,"\","/")
if left(thepath,1)="/" then
thepath=right(thepath,len(thepath)-1)
end if
if right(thepath,1)="/" then
thepath=left(thepath,len(thepath)-1)
end if
thepatharray=split(thepath,"/")
for i=0 to ubound(thepatharray)
createfoldersub1=createfoldersub1&thepatharray(i)&"/"
createfoldersub=server.mappath(createfoldersub1)
if not fsofo.folderexists(createfoldersub) then
fsofo.createfolder(createfoldersub)
end if
next
if err then
err.clear
else
binfo=true
end if
createit=binfo
end function
テストコード
createit("/202004/tools/")
上記のコードがうまくいかない場合は、iisの実行ユーザーに書き込み権限があるかどうかを確認してください。本日テストしたところ、デフォルトのiis 7.5では動作しませんでした。
以下のコードは機能的にシンプルであり、学習用として適しています。
How can ASP detect if a folder exists, or create it automatically if it doesn't exist?
folder=server.mappath("/imagess")
Set fso = CreateObject("Scripting.FileSystemObject")
if fso.fileexists(Server.mappath(filepath)) then
respnse.write("all have what to build ")
else
fso.createfolder(folder)
end if
Set fso = nothing
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(Server.MapPath(SavePath))=false Then
CreateFolder(Server.MapPath(SavePath))
End If
folder=server.mappath("/imagess")
Set fso = CreateObject("Scripting.FileSystemObject")
if fso.fileexists(Server.mappath(filepath)) then
respnse.write("all have what to build ")
else
fso.createfolder(folder)
end if
Set fso = nothing
どれも完璧ではありません。オーナーは、深さのないディレクトリを作るという意味で、私が書いたものをあげているのだと思います。
'Create a new folder (allows classless creation) 1:35 2005-1-31
Public Function CreateFolder(FolderPath)
Dim sObjFSO
Dim arrFolder
Dim i
Set sObjFSO = Server.CreateObject("Scripting.FileSystemObject")
FolderPath = Replace(FolderPath,"\","/")
arrFolder = Split(FolderPath,"/")
On Error Resume Next
For i = 0 To UBound(arrFolder)
If i > 0 Then arrFolder(i) = arrFolder(i-1) & "/" & arrFolder(i)
If Not sObjFSO.FolderExists(arrFolder(i)) Then
CreateFolder(arrFolder(i))
End If
Next
CreateFolder = True
If Err.number <> 0 Then
CreateFolder = False
Err.Clear
End If
End Function
フォルダの作成
dim fso,SavePath
SavePath=server.MapPath(". \"&imagefile&"\"&username&"\"\"&specialname&"")
set fso = server.CreateObject("scripting.filesystemobject")
if fso.FolderExists(SavePath)=false then
fso.createfolder(SavePath)
end if
set fso=nothing
フォルダの削除
dim fso,SavePath
SavePath=server.MapPath(". \"&imagefile&"\"&username&"\"\"&specialname&"")
set fso = server.CreateObject("scripting.filesystemobject")
if fso.FolderExists(SavePath)=true then
fso.deletefolder(SavePath)
end if
set fso=nothing
ファイルをコピーする
dim fso
set fso=server.CreateObject("scripting.filesystemobject")
sub copyfiles(path,path2)
set mycopy=fso.getfile(path)
response.flush()
mycopy.copy path2
response.write("<b>installed success ! </b>"&path2&"<br>")
response.Flush()
end sub
call copyfiles(Server.MapPath(". /no_title2.bmp"),"D:\website_projects\photo\aspupload\07_images\")
他のユーザーが追加した内容は以下の通りです。
Public Function CheckAndCreateFolder(FolderName)
fldr = Server.Mappath(FolderName)
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(fldr) Then
CreateFolder(fldr)
End If
Set fso = Nothing
End Function
フォルダが存在するかどうかをチェックし、存在しない場合はフォルダを作成します。この関数の戻り値はありません。
例 CheckAndCreateFolder("ASP")
ASP フォルダがカレントディレクトリに存在するかどうかを確認し、存在しない場合は ASP フォルダを作成します。
FS上のASP関数 fso関数は、ファイルやフォルダに関連する操作に使用されます。
'//Provides a generic interface for file handling
Class FileSystemObject
'/*
' * Function description:Delete a file
' * Input parameter: FileName - relative path to the file
'*Public Function DelFile(FileName)
Dim getPath
getPath="/"
SET Fso=Server.CreateObject("Scripting.FileSystemObject")
getPath=Replace(getPath&FileName,"//","/")
if Fso.FileExists(Server.MapPath(getPath))=True then
Fso.DeleteFile Server.mappath(getPath)
End if
Set Fso=Nothing
End Function
'/*
' * Function: Determine if the path exists, if not, create it.
' * Input parameter: SaveFilePath - relative path, such as: /UploadFiles'*Public Function CreatePath(SaveFilePath)
Dim DeclarePath,FileObj,FilePath
DeclarePath="/"
Set FileObj=Server.CreateObject("Scripting.FileSystemObject")
For Each FilePath in split(SaveFilePath,"/")
DeclarePath=Replace(DeclarePath&FilePath&"/","//","/")
if FileObj.FolderExists(Server.MapPath(DeclarePath))=false then
FileObj.CreateFolder(Server.MapPath(DeclarePath))'Create folder
end if
Next
Set FileObj=nothing
CreatePath=DeclarePath
End Function
'/*
' * Function:Rename a folder
' * Input Parameter: GetPath - path of the folder
' * Input Parameter: OldName - old folder name
' * Input Parameter: NewName - new folder name
'*Public Function RenFolder(GetPath,OldName,NewName)
Dim Fso
if OldName="" or NewName="" then
exit Function
else
if OldName=NewName then exit Function
end if
SET Fso=Server.CreateObject("Scripting.FileSystemObject")
If Fso.FolderExists(Server.MapPath(GetPath&NewName)) then
response.write"<script language=javascript>alert('Directory already exists!!!') ;this.history.go(-1);</script>"
response.end()
end if
'// create the old folder if it does not exist
If Not Fso.FolderExists(Server.MapPath(GetPath&OldName)) Then
CreatePath(GetPath&OldName)
End if
Fso.MoveFolder Server.MapPath(GetPath&OldName),Server.MapPath(GetPath&NewName)
set Fso=nothing
'response.redirect request.ServerVariables("HTTP_REFERER")
End Function
'/*
' * Function:Save the current file
' * Input Parameter: GetPath - file path
' * Input Parameter: GetContent - the content to save
' * Input Parameter: GetFile - the name of the saved file
'*Public Function SaveEditFile(GetPath,GetContent,GetFile)
if GetContent="" or GetFile="" then exit Function
SET Fso=Server.CreateObject("Scripting.FileSystemObject")
Set CF=Fso.CreateTextFile(Server.mappath(GetPath&GetFile),true)
CF.write GetContent
CF.Close
set CF=nothing
set Fso=nothing
'response.redirect request.ServerVariables("HTTP_REFERER")
End Function
End Class
以上が、ASPがフォルダの存在を検知し、存在しない場合は自動的に作成する仕組みの詳細です。
関連
-
指定したフォルダーにあるリンク切れファイルのシンボリックリンクを自動的に削除するスクリプト
-
ASPは、コンテンツ内のすべての画像パスSRCを正規表現で抽出するためのコードです。
-
オンライン圧縮・解凍のためのASPコード
-
C言語による配列への要素の追加と削除
-
aspで文字列を数値に変換する関数のまとめ
-
ASP Baidu アクティブプッシュのコード例
-
perl スクリプティング スタディガイド - 読書メモ
-
2つのファイルを比較し、データをフィルタリングするスクリプトコード(perlで実装されている
-
Perl 変数の使い方を説明するための Perl 構文
-
コンストラクタでのPerlメソッド使用法入門
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
one.asp 複数のプロジェクト、関数ライブラリ、クラスライブラリを1つのバージョンのメソッドに統合
-
JSONデータを扱うASP実装コード
-
asp は整数の mod を受け取り、小数点以下がある場合は自動的に 1 を加算します。
-
iis7でaspの行番号が不正確な問題の解決法
-
現在のフルパス(url)を取得するためのasp関数コード
-
Perlの特殊な組み込み変数の詳細
-
Perlによるディレクトリの探索とLinuxコマンドによるログの解析 コード例共有
-
Perl の Getopt::Long モジュールを使用して、ユーザーのコマンドライン引数を受け取ります。
-
Perlのファイルハンドルの説明
-
perlの尖ったブラケット演算子(<>)について