Project1
标题:
怎么用脚本创建一个指定名称的文件夹?
[打印本页]
作者:
px.凤翔九天
时间:
2010-11-18 23:09
标题:
怎么用脚本创建一个指定名称的文件夹?
本帖最后由 px.凤翔九天 于 2010-11-19 23:13 编辑
需求就是创建一个文件夹,文件夹名用变量的值(字符串),这个要怎么写?不是要用dll吧?dll鄙人不会...请高手指点。
作者:
DeathKing
时间:
2010-11-18 23:30
本帖最后由 DeathKing 于 2010-11-20 07:55 编辑
dirname = "test"
system("md #{dirname}")
复制代码
Kernel#system方法可以执行一个Shell命令(Windows中就是批处理),同意词为``(ESC键下方,重音符号,不过这个将在执行完毕后退出)
进阶
dirname = "test"
system("cd Graphics & md #{dirname}")
复制代码
作者:
禾西
时间:
2010-11-19 04:18
本帖最后由 禾西 于 2010-11-19 04:24 编辑
呃,Dir不就行了嗎?
如果需要在 RM 目錄下建立新的文檔,就需要調用這樣的語句
Dir.mkdir('./new_document')
作者:
苏小脉
时间:
2010-11-19 07:38
推荐用禾西同志的方法。生成子 Shell 其实就是 fork 一个子进程,有额外的开销。禾西的方法底层调用的是系统 API:
static int
wmkdir(const WCHAR *wpath, int mode)
{
int ret = -1;
RUBY_CRITICAL(do {
if (CreateDirectoryW(wpath, NULL) == FALSE) {
errno = map_errno(GetLastError());
break;
}
if (_wchmod(wpath, mode) == -1) {
RemoveDirectoryW(wpath);
break;
}
ret = 0;
} while (0));
return ret;
}
复制代码
当然在其上也包装了不少抽象层。如果要追求绝对效率,可以直接用 Win32API 调用 CreateDirectory。
作者:
无尘剑
时间:
2010-11-19 22:00
回复
苏小脉
的帖子
这……怎么会有C语言的东西?!
作者:
px.凤翔九天
时间:
2010-11-19 22:13
本帖最后由 px.凤翔九天 于 2010-11-19 22:57 编辑
认真来讲,沙发的答案是我需要的,板凳的直接用Dir可以创建,但是不可套用变量 (#{}) 沙发的可以做到,只是沙发的原理不懂,好用倒是真的。鉴于沙发,板凳的答案完整,决定认可沙发,板凳楼。4楼的....什么东西啊...怎么看也不想Ruby啊...没试....
作者:
苏小脉
时间:
2010-11-20 04:30
回复
px.凤翔九天
的帖子
不知你是基于什么逻辑而得出"不可套用变量"这个结论的?
Dir.mkdir("#{var}")
复制代码
作者:
DeathKing
时间:
2010-11-20 07:58
当然不是Linux的Shell,Windows使用的是Bat
cd 是切换文件夹的命令
md 是建立文件夹的命令
在Linux下,cd是切换文件夹的命令,而mkdir才是建立文件夹的命令。
4#给的是Ruby的C源码中,Dir类的mkdir方法的定义。
作者:
px.凤翔九天
时间:
2010-11-20 21:21
回复
DeathKing
的帖子
哦,谢谢解释,这下懂了。:)
作者:
苏小脉
时间:
2010-11-22 00:11
本帖最后由 苏小脉 于 2010-11-22 00:12 编辑
回复
DeathKing
的帖子
术语不同,概念相似,Windows 下,用那些命令会去调用 Windows 的命令行解释器 cmd.exe (Windows XP 后)或 COMMAND.COM(Windows XP 前),也就会生成子进程,或是替换当前进程,效率自然不如直接通过 API 了。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1