这是我的代码:
Program Write_in_folder
Implicit none
Integer::Num_Ber
Integer,parameter::Le=367
Character(Le)::Output
Character(Le),parameter::fmt_1='("Result\Output_",i0,".txt")'
Character(Le),parameter::fmt_2='(2x,i0)'
Character(Le),parameter::fmt_3='mkdir Result'
Write(*,*)"Enter the number:"
Read(*,*)Num_Ber
Write(Output,trim(adjustl(fmt_1)))Num_Ber
Call execute_command_line(trim(adjustl(fmt_3)))
Open(Unit=1,File=trim(adjustl(Output)),Status='Unknown')
Write(1,trim(adjustl(fmt_2)))Num_Ber
Close(Unit=1,Status='Keep')
Stop
End Program Write_in_folder
如何以Result
扩展程序打开文件夹Num_Ber
?
例如,如果Num_Ber
为56,我想打开文件夹:Result_56
。
如何检查此文件夹是否已打开,如果是,我想停止执行此子例程:Call execute_command_line
?
答案 0 :(得分:1)
简短回答:
您要做的是更改fmt_3
Character(Le),parameter::fmt_3='mkdir -p Result'
使用选项-p
,mkdir
将创建目录(如果该目录不存在),如果存在则不执行任何操作。
答案很长:
根据您的问题描述,内在查询功能可用于执行您想要执行的操作。 以下陈述
inquire (file=fileName, exist=existStatus)
其中fileName
是包含目录路径的字符串变量,existStatus
是逻辑变量,如果目录存在,则.true.
将返回existStatus
或{{ 1}}如果没有。
打开一个目录,我猜你不是说你在说什么,你不想乱搞目录。文件系统中的目录是一个容器,您希望将该容器的内部留给操作系统并使用系统提供给您的接口:
现在在询问目录是否存在之后,如果它不存在,你可以创建它。
.false.
如果这就是您想要实现的目标,您可以使用mkdir选项inquire (file=fileName, exist=existStatus)
if(.not.existStatus)then
!the code to create the directory here
end if
。如果目录不存在,则-p
创建目录,如果目录已存在,则不执行任何操作。