我試圖創建一個腳本,它將在Windows文件結構中複製DOORS結構。這個想法是運行腳本,並將當前位置的文件夾結構向下複製到用戶選擇的Windows文件夾結構中。我是DXL全新的,但我找到了mkdir()函數。當使用它時,我給它一個完整的文件路徑,例如C:\ output \ folder1 \似乎有問題。在這種情況下,除非C:\輸出已存在,否則它不會正確創建結構。在窗口中複製DOORS結構
我的問題是,有沒有辦法讓它可以一次創建多個文件夾級別,還是有更好的方法去實現它?
我試圖創建一個腳本,它將在Windows文件結構中複製DOORS結構。這個想法是運行腳本,並將當前位置的文件夾結構向下複製到用戶選擇的Windows文件夾結構中。我是DXL全新的,但我找到了mkdir()函數。當使用它時,我給它一個完整的文件路徑,例如C:\ output \ folder1 \似乎有問題。在這種情況下,除非C:\輸出已存在,否則它不會正確創建結構。在窗口中複製DOORS結構
我的問題是,有沒有辦法讓它可以一次創建多個文件夾級別,還是有更好的方法去實現它?
史蒂夫的回答是正確的,但在我的情況下,使用遞歸更有意義,因爲我還需要做其他一些事情。
此代碼從一個版本我在IBM開發者發現被修改工作論壇,但我無法找到源頭,如果我再次找到它
void RecurseFolder(Folder fld)
{ // Deal RECURSIVELY with sub-folders, and then all modules in this folder
if (!fileExists_(g_base_dir "\\" name(fld)) && !(name(current) == name(fld)))
{
mkdir(g_base_dir "\\")
}
Skip skpItems = createString()
Item itm
string NameItem
Folder fldNew
// Stage in Skip, key is name which is Alpha order
for itm in fld do
{
put (skpItems, fullName(itm), itm)
}
// Recurse through sub-folders
for itm in skpItems do
{
string base_dir = g_base_dir
NameItem = (string key skpItems)
if (type(itm) == "Folder" or type(itm) == "Project")
{
fldNew = folder(NameItem)
g_base_dir = g_base_dir "\\" name(fldNew)
RecurseFolder(fldNew) // *** RECURSION ***
g_base_dir = base_dir
}
else if (type(itm) == "Formal")
{
//open module for reading - silent mode, standard view
Module m = read(fullName(itm), false, true)
if (NameItem != "")
{
if (!null export(base_dir "\\" name(itm) ".xml"))
{
errorBox "Export failed! - \n" base_dir "\\" name(itm) ".xml"
}
}
//if module is not visible
if (!isVisible(m))
{
// close it to improve performance
close m
}
}
else {} //Nothing to do
}
delete(skpItems)
} // end RecurseFolder()
您想首先創建基本級別的文件夾(無論是在腳本中還是外部),然後在循環訪問DOORS中的每個項目/文件夾時,爲該項目創建一個文件夾。例如:
mkdir("C:/output")
string p_name = ""
Item i
Project p
for p_name in database do {
mkdir("C:/output/" p_name)
p = project(p_name)
for i in p do {
if((type(i) "" == "Folder") || (type(i) "" == "Project")) {
mkdir("C:/output/" fullName(i))
}
}
}
這應該讓你開始,我沒有時間去測試它,但你可以修改它以滿足你的需求。
十分感謝我聯繫,我會給去:) –