FileSystemObject and Apostrophes

Snitz™ Forums 2000
https://forum.snitz.com/forumTopic/Posts/70570?pagenum=1
05 November 2025, 10:54

Topic


Carefree
FileSystemObject and Apostrophes
10 July 2013, 12:11


I want to check for the existence of files using FSO, but if the file path and/or name include an apostrophe, the program breaks. Anyone have a suggestion?
Example code:
Code:

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
If not objFSO.FileExists(strPath&strFile) Then
strErr=strErr & "<li>"&strFile&" does not exist.</li>"
Else
objFSO.Close
End If
Set objFSO = Nothing

 

Replies ...


HuwR
10 July 2013, 12:19


try escaping any apostrophes with a slash, so try a replace on strFile to replace ' with \'
Carefree
11 July 2013, 09:18


Replacing with an \' or with an '' doesn't work. Any other suggestions?
HuwR
11 July 2013, 10:41


well, from what I can find out, the FSO should not have any problem with filenames containing an apostrophe, are you sure that is definitely what is causing the problem ?
HuwR
11 July 2013, 10:45


From the Script Guy's Blog Incidentally, if you’re using the FileSystemObject (another way to work with files and folders), you don’t have to worry about this; the apostrophe doesn’t seem to bother the FileSystemObject. For example, if you want to know the size of Ken Myer’s Folder, use this code:

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\Ken Myer’s Folder")
Wscript.Echo "Size: " & objFolder.Size
No escaping or other coding tricks required.
Carefree
11 July 2013, 11:50


The code works perfectly on all folders/files except for those containing an apostrophe and/or an ampersand.
HuwR
11 July 2013, 13:30


what are you actually getting when you run your code, I just tried this myself and it works quite happily with ampersand and apostrophes in file names
HuwR
11 July 2013, 13:34


this is the code I ran, and it quite happily displays that the file exists
Code:

<%
strPath = "c:\temp\"
strFile = "apostroph'e&ampersand.txt"
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
If not objFSO.FileExists(strPath&strFile) Then
strErr=strErr & "<li>"&strFile&" does not exist.</li>"
Else
strErr=strErr & "<li>"&strFile&" exists.</li>"
End If
Set objFSO = Nothing
Response.Write strErr
%>
results in
  • apostroph'e&ampersand.txt exists.
FYI, your code errors on the line objFSO.Close
Carefree
11 July 2013, 20:04


Found it - wasn't in this routine but in the chkstring function; was resulting in a double apostrophe before checking the file name. Thanks. Now if only I could figure out that javascript mouse-over routine, I'd be through with this and I could rest.
Carefree
11 August 2015, 16:22


This is very old, but here's an update. I solved the mouseover Javascript routine by replacing apostrophes with the U+2032 symbol (#8242;). They still look like apostrophes (and actually sort properly now whereas the apostrophe didn't), so now the Javascript is happy.
© 2000-2021 Snitz™ Communications