大家好,
我是一個腳本傻瓜,需要一隻手才能完成一項簡單的任務。 我需要一個腳本,允許用戶選擇單個目錄,在目錄中查找CSV文件,並將文件追加/連接到單個JMP數據表中。 現在,每次用戶運行腳本時,如果使用目錄中的CSV文件重建這個“主數據表”就沒問題了。
我做了一些研究,並從常駐超級用戶天才txnelson中找到了應該完成任務的東西,但是當我運行它時,我收到一個錯誤,我不明白為什麼。 劇本:
Names Default To Here( 1 );
// Setup an empty table to start to concatenate other tables to
dtbase = New Table( "Base Table" );
// Have the user select the starting folder
dirpath = Pick Directory( "Pick the Top Level Directory" );
// Get all of the files in all of the folders that are under the picked folder
TheFileList = Files In Directory( dirpath, "recursive" );
// Go through all of the files and read in append those that meet your
// requirement. You will need to amend the IF statement to meet your criteria
For( i = 1, i <= N Items( TheFileList ), i++,
If( Uppercase( Word( -1, TheFileList, "." ) ) == "CSV" & Is File( dirpath || TheFileList ) == 1,
dt = Open( dirpath || TheFileList );
dtbase = dtbase << concatenate( dt, append to first table( 1 ) );
Close( dt, nosave );
);
);當我運行腳本時,它會一直運行,直到我選擇目錄,然後沒有任何反應。 我逐步完成了代碼,這裡是拋出錯誤的地方:
參數應該是訪問或評估'Word',Bad Argument(TheFileList),Word / * ### * /( - 1,TheFileList,“。”)中的字符。
我不明白這個行話是什麼意思。 代碼似乎有道理。 為什麼它不起作用?
謝謝,抱歉是個白痴。
很高興你弄明白了,對不起,我可以解釋一下。在吉姆尼爾森發布該代碼後不久,JMP社區經歷了一次重大轉變。你遇到的問題是我現在仍在追趕的問題博客帖子:有時轉換過程會從嵌入帖子的JSL中刪除下標。(如果你在Jim的帖子中看得更遠,你可以看到有人拍攝的照片,其中包含下標...這幾個月真的是對的!)
@txnelson @Jeff_Perkinson
古代的帖子
通過做一些更多的研究來解決這個問題 - 我想需要在括號中加入一點“i”來循環遍歷目錄中的文件所選擇的不同文件,這些文件被分配給TheFileList。 我甚至不知道從哪裡開始 - 不知道人們可以循環通過這樣的“項目” - 甚至不知道在700 +頁面JSL指南中哪裡可以找到這個功能。 腳本編寫是不可能的。
If( Uppercase( Word( -1, TheFileList[i], "." ) ) == "CSV" & Is File( dirpath || TheFileList[i] ) == 1,
dt = Open( dirpath || TheFileList[i] );
dtbase = dtbase << concatenate( dt, append to first table( 1 ) );
Close( dt, nosave );
);
);