Dear list, I have the following sample: \starttext \startluacode main_file = document.files[1] if file.pathpart(main_file) == "" then main_filename = file.nameonly(main_file) main_filename_win = main_filename else main_filename = file.pathpart(main_file):gsub(io.fileseparator, "/") .. "/" .. file.nameonly(main_file) docx_file = main_filename .. "-file.docx" epub_file = main_filename .. "-file.epub" if os.name == "windows" then main_filename_win = file.pathpart(main_file) .. io.fileseparator .. file.nameonly(main_file) docx_file_win = main_filename_win .. "-file.docx" epub_file_win = main_filename_win .. "-file.epub" end end if os.name=="windows" then context(docx_file_win) os.execute("copy " .. docx_file_win .. " aeae") else context(docx_file) end \stopluacode \stoptext If I run it on Windows, context(docx_file_win) cannot deal with the backslash, so I get: .document-file.docx So it is impossible that os.execute may work with copy. Running it with Linux, I get "./document-file.docx". How can I get the io.fileseparator or escape the backslash in main_filename_win above? Many thanks for your help, Pablo -- http://www.ousia.tk
On 11/3/2021 7:49 PM, Pablo Rodriguez via ntg-context wrote:
Dear list,
I have the following sample:
\starttext \startluacode main_file = document.files[1]
if file.pathpart(main_file) == "" then main_filename = file.nameonly(main_file) main_filename_win = main_filename else main_filename = file.pathpart(main_file):gsub(io.fileseparator, "/") .. "/" .. file.nameonly(main_file) docx_file = main_filename .. "-file.docx" epub_file = main_filename .. "-file.epub" if os.name == "windows" then main_filename_win = file.pathpart(main_file) .. io.fileseparator .. file.nameonly(main_file) docx_file_win = main_filename_win .. "-file.docx" epub_file_win = main_filename_win .. "-file.epub" end end
if os.name=="windows" then context(docx_file_win) os.execute("copy " .. docx_file_win .. " aeae") else context(docx_file) end \stopluacode \stoptext
If I run it on Windows, context(docx_file_win) cannot deal with the backslash, so I get:
.document-file.docx
So it is impossible that os.execute may work with copy.
Running it with Linux, I get "./document-file.docx".
How can I get the io.fileseparator or escape the backslash in main_filename_win above? (there are helpers for splitting names and combining paths)
- use locals - wrap names in "" and use / : dir "c:/data" - just use file.copy (with forward slashes), is faster too so in the end there is no need to test for windows Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
On 11/3/21 9:55 PM, Hans Hagen via ntg-context wrote:
On 11/3/2021 7:49 PM, Pablo Rodriguez via ntg-context wrote:
[...] How can I get the io.fileseparator or escape the backslash in main_filename_win above? (there are helpers for splitting names and combining paths)
- use locals - wrap names in "" and use / : dir "c:/data"
Many thanks for your reply, Hans. I didn’t know that this was valid in Windows command prompt: command "d:/data/file.txt"
- just use file.copy (with forward slashes), is faster too
copy was just a command sample, not the one I intend to use.
so in the end there is no need to test for windows
I’m really suprised that Windows accepts slashes in paths. Many thanks for your help again, Pablo -- http://www.ousia.tk
participants (3)
-
Hans Hagen
-
Henning Hraban Ramm
-
Pablo Rodriguez