2013年8月8日 星期四

批次檔(Batch) & MS-Dos 指令集

    其實,我對於兩者的分辨還搞不清楚,所以到現在都還是模糊狀態。不過有了較簡易的整理,以後要使用也比較不用特別去查,稍微看一下自己的筆記,印象也會比較深刻些。

    為什麼會有這篇的產出,是因為目前因為需要批大量的改程式作業,假如套用了批次檔,會稍微比起開起編譯平台在執行的快多了。

    雖然東西還很東缺西缺,不過總比沒有紀錄的好多了!以後有機會還會再補充。

========================================================================
  • Batch 
  • %1 ~ %9
    • 指的是輸入的參數,像是把檔案拖曳到bat檔案上面,而第一個檔案就是指%1
  • Echo
    • 打開"命令式"的顯示,或關掉顯示
      • Echo [{on | off}]
    • 顯示訊息,訊息的部分可以替換成參數,但要以%%包夾起來
      • Echo [message]
      • Echo %GPP%
    • 換行指令
      • @Echo:
  • @
    • 可以將該行命令隱蔽起來
      • @Echo %GPP%
  • Rem
    • 註解的指令,在編輯程式碼時,可以用來作為提醒之助解用途
      • Echo Setup Parameter
  • Set
    • 設定參數的指派指令
      • SET PF=%PROGRAMFILES%    //把%PROGRAMFILES%指派給PF
      • %PROGRAMFILES%是指系統資料夾
      • %TIME%是指系統時間
      • ※未完
    • 字元替換用法
      • SET T1=%T0::=%     //將T0中的':'替換成'',再指派給T1
      • SET T2=%T1: =0%   //把T1中的空白替換成0,再指派給T2
  • :、GOTO
    • : 將後續字串視為標籤,也就是TAG,可以搭配GOTO來使用
    • GOTO 移動到 :XX標籤位置的指令
      • :reLoop
        Pause
        GOTO reLoop    //跑回:reLoop位置
  • If 
    • If Else
      • 假如遇到選擇的情況,可以透過IF ELSE 來幫忙分類
        • If (Not) "%1" == "XX" (
                  Statement1
          )    Else    (    Statement2
          )        //假如%1(NOT)等於XX,就執行S1,不等於就找ELSE的S2
        • IF "%~x2"==".cpp" (
          "%GPP%" -c "%1" -o "%~dpn1%.o"
          )   ELSE   (
          GOTO ALL_END
          ) //參照環境路徑~x%?,假如第二個檔案的附檔名是.cpp,那就跑true
    • If Exist
      • 對於某種類別或是特定檔案進行偵測
        • IF (Not) Exist "XX" Statement1 ←假如(Not)存在XX這東西,就執行S1
  • Shift /x
    • 將第x個檔案的參數順位,向前搬移
      • SHIFT /1     //拖曳了三個檔案進.bat,而執行到了SHIFT 就會把第一個檔案蓋掉,讓第二個檔案變成第一個檔案,後續的檔案進行遞補
  • Call
  • start
  • for
  • 環境變數
    • %~fI
      • 完整的路徑包含副檔名
    • %~dI
      • I 所在的硬碟路徑
    • %~pI
      • I所在的資料夾路徑,除了硬碟路徑
    • %~nI
      • 檔案名稱
    • %~xI
      • 副檔名
    • %~sI
      • 完整的路徑變成短址
    • %~aI
      • 檔案的屬性
    • %~tI
      • 檔案創建的日期/時間
    • %~zI
      • 檔案的大小
    • %~$PATH:I
      • 查找列在路徑環境變數的目錄
    • 變數組合
      • %~dpnI
        • dI、pI、nI的串接
      • %~nxI
        • 檔案名稱與副檔名串接
      • %~fsI
        • 完整的路徑變成縮址
      • %~dp$PATH:I
      • %~ftzaI
        • 文件屬性 + 日期 + 檔案大小 + 完整路徑名
========================================================================
  • MS-Dos
  • move *_fail.cpp fail\ 
    • 將檔案名稱最後為_fail.cpp的檔案,移動到fail的資料夾底下
  • del *.exe
    • 將檔案的副檔名為.exe的檔案,進行刪除的操作


2013年7月29日 星期一

C++ 簡易使用CMD Pipe來檢查cpp與testData的輸出

Main:如標題

Goal:測試自己編寫的Cpp檔案帶入測試資料 是否輸出正確的檢查

Component:已經完成的Cpp檔案、TestData.txt、CMD

Step:
(1) 執行CMD
Win 7:可以在開始列直接搜尋CMD,然後執行CMD,如附圖
XP:打開"執行",執行CMD,如附圖

(2) 拖曳Cpp編譯過後的".exe"檔案 至 CMD 

(3) 拖曳.exe之後 補上" < "

(4) Keyin " < " 之後,換拖曳 TestData(測試資料) 進來

(5) 輸入"Enter",然後就可以看到測試的結果了






2013年6月5日 星期三

Android Custom Dialog

關於Custom Dialog

主要的主體構成有三項

//主體宣告
Dialog dialog = new Dialog(this);
//納入的Layout
dialog.setContentView(R.layout.picshow_setteing);
//主體顯示
dialog.show();


假如要連結在Layout裡面的物件,findViewById的前面一定要加上dialog的名稱,這樣才找的到
Button BtSend = (Button)dialog.findViewById(R.id.PicBtSend);

假如不需要Tittle,可以在setContextView之前加上↓
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

假如要更動Layout的長寬,可以在setContextView之後加上↓
dialog.getWindow().getAttributes().width = LayoutParams.FILL_PARENT;
OR
dialog.getWindow().setLayout(600, 400);

2013年5月2日 星期四

C# 字串補零處理


Example:
    int i = 123;
    textBox1.Text = i.ToString("000000");
    textBox2.Text = i.ToString("D6");
    textBox3.Text = i.ToString().PadLeft(6, '0');

那假使我們只有知道字串的內容"123"

可以透過length來取得3的長度

字串 = (50 * Convert.ToInt32(數字) + 數字 + 1).ToString();
//轉換總字串長度
string length = 字串.Length.ToString();
字串 = selectionkeyinPartKey.PadLeft(length.Length, '0');

2013年3月30日 星期六

JAVA Android HttpGet應用、正規表示法

老師配給了一項 Android 有關於匯率的作業

而某同學對於抓網頁資料這一塊有涉略

所以我正好也學到了 怎麼使用HttpGet



//使用HttpGet 去獲得網頁資料,url 我在這邊是放置網頁的網址字串
HttpGet getpage = new HttpGet(url);
//新增CLIENT給HttpGet使用
HttpClient httpClient = new DefaultHttpClient();

try
{
       //使用請求回應的方式去要資料
       HttpResponse response = httpClient.execute(getpage);
       //具片段資料好像200 是正常的,則500是不正常的 來檢測
       if(response.getStatusLine().getStatusCode() == 200)
       {
//將網頁編碼導回utf-8,處理網頁的編碼
String PageTemp = EntityUtils.toString(response.getEntity(), "utf-8");
//切取重點之部分
PageTemp = PageTemp.substring(PageTemp.indexOf("decimal"),PageTemp.indexOf("</center>"));
//設定正規表達式 並傳給func做擷取
ArrayList<String> BotRateList = DivthePageKeys(PageTemp, ">-<|[0-9]*.[0-9][0-9*][0-9*][0-9*][0-9*]");

/*略.......*/
}
}
catch (ClientProtocolException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

//因為抓取網頁的資料 所以用了正規表示法去篩選網頁的數字

public ArrayList<String> DivthePageKeys(String text, String RegularExpression)
{
ArrayList<String> getnumerical = new ArrayList<String>();
Pattern model = Pattern.compile(RegularExpression);
Matcher match = model.matcher(text);
while(match.find())
{
//取得該"組"所對應到的資料
getnumerical.add(match.group(0));
  }
return getnumerical;
}


2013年3月18日 星期一

CodeIgniter 多次上傳處理

PHP的上傳功能 只有支援單檔案上傳處理的樣子

即使用了還不會用的jQuery

去改善前端的多檔案上傳按鈕

在後端的部分 還是沒找到辦法處理多檔案上傳

所以還是得把 檔案[] ↓

重新指派為 檔案、檔案、檔案.......

才能順利處理完。

Point:

$FilesBackup = $_FILES;

for($i = 0; $i < $CountFile; $i++)
{
    //reset the $_FILES
    $_FILES['userfile']['name'] = $FilesBackup['userfile']['name'][$i];
    $_FILES['userfile']['type'] = $FilesBackup['userfile']['type'][$i];
    $_FILES['userfile']['tmp_name'] = $FilesBackup['userfile']['tmp_name'][$i];
    $_FILES['userfile']['error'] = $FilesBackup['userfile']['error'][$i];
    $_FILES['userfile']['size'] = $FilesBackup['userfile']['size'][$i];
    if (!$this->upload->do_upload())
    {
        //upload fail
    }
    else
    {
        //upload success,then.......
    }

}

http://superkaka.no-ip.org/