1. 程式人生 > >c#檔案操作程式碼段儲存

c#檔案操作程式碼段儲存

1.建立資料夾 //using System.IO; Directory.CreateDirectory(%%1);

2.建立檔案 //using System.IO; File.Create(%%1);

3.刪除檔案 //using System.IO; File.Delete(%%1);

4.刪除資料夾 //using System.IO; Directory.Delete(%%1);

5.刪除一個目錄下所有的資料夾 //using System.IO; foreach (string dirStr in Directory.GetDirectories(%%1)) { DirectoryInfo dir = new DirectoryInfo(dirStr); ArrayList folders=new ArrayList(); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); for (int i = 0; i < folders.Count; i++) { FileInfo f = folders[i] as FileInfo; if (f == null) { DirectoryInfo d = folders[i] as DirectoryInfo; d.Delete(); } } }

6.清空資料夾 //using System.IO; Directory.Delete(%%1,true); Directory.CreateDirectory(%%1);

7.讀取檔案 //using System.IO; StreamReader s = File.OpenText(%%1); string %%2 = null; while ((%%2 = s.ReadLine()) != null){ %%3 } s.Close();

8.寫入檔案 //using System.IO; FileInfo f = new FileInfo(%%1); StreamWriter w = f.CreateText(); w.WriteLine(%%2); w.Close();

9.寫入隨機檔案 //using System.IO; byte[] dataArray = new byte[100000];//new Random().NextBytes(dataArray); using(FileStream FileStream = new FileStream(%%1, FileMode.Create)){ // Write the data to the file, byte by byte. for(int i = 0; i < dataArray.Length; i++){ FileStream.WriteByte(dataArray[i]); } // Set the stream position to the beginning of the file. FileStream.Seek(0, SeekOrigin.Begin); // Read and verify the data. for(int i = 0; i < FileStream.Length; i++){ if(dataArray[i] != FileStream.ReadByte()){ //寫入資料錯誤 return; } } //"資料流"+FileStream.Name+"已驗證" }

10.讀取檔案屬性 //using System.IO; FileInfo f = new FileInfo(%%1);//f.CreationTime,f.FullName if((f.Attributes & FileAttributes.ReadOnly) != 0){ %%2 } else{ %%3 }

11.寫入屬性 //using System.IO; FileInfo f = new FileInfo(%%1); //設定只讀 f.Attributes = myFile.Attributes | FileAttributes.ReadOnly; //設定可寫 f.Attributes = myFile.Attributes & ~FileAttributes.ReadOnly;

12.列舉一個資料夾中的所有資料夾 //using System.IO; foreach (string %%2 in Directory.GetDirectories(%%1)){ %%3 }  /* DirectoryInfo dir = new DirectoryInfo(%%1); FileInfo[] files = dir.GetFiles("*.*"); foreach(FileInfo %%2 in files){ %%3 } */

13.複製資料夾 /* using System.IO; using System.Collections; */ string path = (%%2.LastIndexOf("\\") == %%2.Length - 1) ? %%2 : %%2+"\\"; string parent = Path.GetDirectoryName(%%1); Directory.CreateDirectory(path + Path.GetFileName(%%1)); DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 : %%1 + "\\"); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos()); while (Folders.Count>0) { FileSystemInfo tmp = Folders.Dequeue(); FileInfo f = tmp as FileInfo; if (f == null) { DirectoryInfo d = tmp as DirectoryInfo; Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", path)); foreach (FileSystemInfo fi in d.GetFileSystemInfos()) { Folders.Enqueue(fi); } } else { f.CopyTo(f.FullName.Replace(parent, path)); } }

14.複製目錄下所有的資料夾到另一個資料夾下 /* using System.IO; using System.Collections; */ DirectoryInfo d = new DirectoryInfo(%%1); foreach (DirectoryInfo dirs in d.GetDirectories()) { Queue<FileSystemInfo> al = new Queue<FileSystemInfo>(dirs.GetFileSystemInfos()); while (al.Count > 0) { FileSystemInfo temp = al.Dequeue(); FileInfo file = temp as FileInfo; if (file == null) { DirectoryInfo directory = temp as DirectoryInfo; Directory.CreateDirectory(path + directory.Name); foreach (FileSystemInfo fsi in directory.GetFileSystemInfos()) al.Enqueue(fsi); } else File.Copy(file.FullName, path + file.Name); } }

15.移動資料夾 /* using System.IO; using System.Collections; */ string filename = Path.GetFileName(%%1); string path=(%%2.LastIndexOf("\\") == %%2.Length - 1) ? %%2 : %%2 + "\\"; if (Path.GetPathRoot(%%1) == Path.GetPathRoot(%%2)) Directory.Move(%%1, path + filename); else { string parent = Path.GetDirectoryName(%%1); Directory.CreateDirectory(path + Path.GetFileName(%%1)); DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 : %%1 + "\\"); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos()); while (Folders.Count > 0) { FileSystemInfo tmp = Folders.Dequeue(); FileInfo f = tmp as FileInfo; if (f == null) { DirectoryInfo d = tmp as DirectoryInfo; DirectoryInfo dpath = new DirectoryInfo(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", path)); dpath.Create(); foreach (FileSystemInfo fi in d.GetFileSystemInfos()) { Folders.Enqueue(fi); } } else { f.MoveTo(f.FullName.Replace(parent, path)); } } Directory.Delete(%%1, true); }

16.移動目錄下所有的資料夾到另一個目錄下 /* using System.IO; using System.Collections; */ string filename = Path.GetFileName(%%1); if (Path.GetPathRoot(%%1) == Path.GetPathRoot(%%2)) foreach (string dir in Directory.GetDirectories(%%1)) Directory.Move(dir, Path.Combine(%%2,filename)); else { foreach (string dir2 in Directory.GetDirectories(%%1)) { string parent = Path.GetDirectoryName(dir2); Directory.CreateDirectory(Path.Combine(%%2, Path.GetFileName(dir2))); string dir = (dir2.LastIndexOf("\\") == dir2.Length - 1) ? dir2 : dir2 + "\\"; DirectoryInfo dirdir = new DirectoryInfo(dir); FileSystemInfo[] fileArr = dirdir.GetFileSystemInfos(); Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dirdir.GetFileSystemInfos()); while (Folders.Count > 0) { FileSystemInfo tmp = Folders.Dequeue(); FileInfo f = tmp as FileInfo; if (f == null) { DirectoryInfo d = tmp as DirectoryInfo; DirectoryInfo dpath = new DirectoryInfo(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", %%2)); dpath.Create(); foreach (FileSystemInfo fi in d.GetFileSystemInfos()) { Folders.Enqueue(fi); } } else { f.MoveTo(f.FullName.Replace(parent, %%2)); } } dirdir.Delete(true); } }

17.以一個資料夾的框架在另一個目錄建立資料夾和空檔案 /* using System.IO; using System.Collections; */ bool b=false; string path = (%%2.LastIndexOf("\\") == %%2.Length - 1) ? %%2 : %%2 + "\\"; string parent = Path.GetDirectoryName(%%1); Directory.CreateDirectory(path + Path.GetFileName(%%1)); DirectoryInfo dir = new DirectoryInfo((%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 : %%1 + "\\"); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos()); while (Folders.Count > 0) { FileSystemInfo tmp = Folders.Dequeue(); FileInfo f = tmp as FileInfo; if (f == null) { DirectoryInfo d = tmp as DirectoryInfo; Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", path)); foreach (FileSystemInfo fi in d.GetFileSystemInfos()) { Folders.Enqueue(fi); } } else { if(b) File.Create(f.FullName.Replace(parent, path)); } }

18.複製檔案 //using System.IO; File.Copy(%%1,%%2);

19.複製一個資料夾下所有的檔案到另一個目錄 //using System.IO; foreach (string fileStr in Directory.GetFiles(%%1)) File.Copy((%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 +Path.GetFileName(fileStr): %%1 + "\\"+Path.GetFileName(fileStr),(%%2.LastIndexOf("\\") == %%2.Length - 1) ? %%2 +Path.GetFileName(fileStr): %%2 + "\\"+Path.GetFileName(fileStr));

20.提取副檔名 //using System.IO; string %%2=Path.GetExtension(%%1);

21.提取檔名 //using System.IO; string %%2=Path.GetFileName(%%1);

22.提取檔案路徑 //using System.IO; string %%2=Path.GetDirectoryName(%%1);

23.替換副檔名 //using System.IO; File.ChangeExtension(%%1,%%2);

24.追加路徑 //using System.IO; string %%3=Path.Combine(%%1,%%2);

25.移動檔案 //using System.IO; File.Move(%%1,%%2+"\\"+file.getname(%%1));

26.移動一個資料夾下所有檔案到另一個目錄 foreach (string fileStr in Directory.GetFiles(%%1)) File.Move((%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 +Path.GetFileName(fileStr): %%1 + "\\"+Path.GetFileName(fileStr),(%%2.LastIndexOf("\\") == %%2.Length - 1) ? %%2 +Path.GetFileName(fileStr): %%2 + "\\"+Path.GetFileName(fileStr));

27.指定目錄下搜尋檔案 /* using System.Text; using System.IO; */ string fileName=%%1; string dirName=%%2; DirectoryInfo dirc=new DirectoryInfo(dirName); foreach(FileInfo file in dirc.GetFiles()) { if(file.Name.IndexOf(fileName)>-1) return file.FullName; } foreach(DirectoryInfo dir in dirc.GetDirectories()) {  return GetFile(fileName,dir.FullName);  } return "找不到指定的檔案";  }

28.開啟對話方塊 OpenFileDialog openFileDialog=new OpenFileDialog();  openFileDialog.InitialDirectory=\"c:\\\\\";//注意這裡寫路徑時要用c:\\\\而不是c:\\  openFileDialog.Filter=\"文字檔案|*.*|C#檔案|*.cs|所有檔案|*.*\";  openFileDialog.RestoreDirectory=true;  openFileDialog.FilterIndex=1;  if (openFileDialog.ShowDialog()==DialogResult.OK) {  fName=openFileDialog.FileName;  File fileOpen=new File(fName);  isFileHaveName=true;  %%1=fileOpen.ReadFile();  %%1.AppendText(\"\");  }

29.檔案分割 //using System.IO; FileStream fsr = new FileStream(%%1, FileMode.Open, FileAccess.Read); byte[] btArr = new byte[fsr.Length]; fsr.Read(btArr, 0, btArr.Length); fsr.Close(); string strFileName=%%1.Substring(%%1.LastIndexOf("\\")+1); FileStream fsw = new FileStream(%%2 + strFileName + "1", FileMode.Create, FileAccess.Write); fsw.Write(btArr, 0, btArr.Length/2); fsw.Close(); fsw = new FileStream(%%2 + strFileName + "2", FileMode.Create, FileAccess.Write); fsw.Write(btArr, btArr.Length/2, btArr.Length-btArr.Length/2); fsw.Close();

30.檔案合併 //using System.IO; string strFileName = %%1.Substring(%%1.LastIndexOf("\\") + 1); FileStream fsr1 = new FileStream(%%2 + strFileName + "1", FileMode.Open, FileAccess.Read); FileStream fsr2 = new FileStream(%%2 + strFileName + "2", FileMode.Open, FileAccess.Read); byte[] btArr = new byte[fsr1.Length+fsr2.Length]; fsr1.Read(btArr, 0, Convert.ToInt32(fsr1.Length)); fsr2.Read(btArr, Convert.ToInt32(fsr1.Length), Convert.ToInt32(fsr2.Length)); fsr1.Close();fsr2.Close(); FileStream fsw = new FileStream(%%2 + strFileName, FileMode.Create, FileAccess.Write); fsw.Write(btArr, 0, btArr.Length); fsw.Close();

31.檔案簡單加密 //using System.IO; //讀檔案 FileStream fsr = new FileStream(%%1, FileMode.Open, FileAccess.Read); byte[] btArr = new byte[fsr.Length]; fsr.Read(btArr, 0, btArr.Length); fsr.Close();  for (int i = 0; i < btArr.Length; i++){ //加密 int ibt = btArr[i]; ibt += 100; ibt %= 256; btArr[i] = Convert.ToByte(ibt); } //寫檔案 string strFileName = Path.GetExtension(%%1); FileStream fsw = new FileStream(%%2+"/" + "enc_" + strFileName, FileMode.Create, FileAccess.Write); fsw.Write(btArr, 0, btArr.Length); fsw.Close();

32.檔案簡單解密 //using System.IO; FileStream fsr = new FileStream(%%1, FileMode.Open, FileAccess.Read); byte[] btArr = new byte[fsr.Length]; fsr.Read(btArr, 0, btArr.Length); fsr.Close(); for (int i = 0; i < btArr.Length; i++){ //解密 int ibt = btArr[i]; ibt -= 100; ibt += 256; ibt %= 256; btArr[i] = Convert.ToByte(ibt); } //寫檔案 string strFileName = Path.GetExtension(%%1); FileStream fsw = new FileStream(%%2 +"/" + strFileName, FileMode.Create, FileAccess.Write); fsw.Write(btArr, 0, btArr.Length); fsw.Close();

33.讀取ini檔案屬性 //using System.Runtime.InteropServices; //[DllImport("kernel32")]//返回取得字串緩衝區的長度 //private static extern long GetPrivateProfileString(string section,string key, string def,StringBuilder retVal,int size,string filePath); string Section=%%1; string Key=%%2; string NoText=%%3; string iniFilePath="Setup.ini"; string %%4=String.Empty; if(File.Exists(iniFilePath)){ StringBuilder temp = new StringBuilder(1024); GetPrivateProfileString(Section,Key,NoText,temp,1024,iniFilePath); %%4=temp.ToString(); }

34.合併一個目錄下所有的檔案 //using System.IO; FileStream fsw = new FileStream(%%2, FileMode.Create, FileAccess.Write); foreach (string fileStr in Directory.GetFiles(%%1)) { FileStream fsr1 = new FileStream(fileStr, FileMode.Open, FileAccess.Read); byte[] btArr = new byte[fsr1.Length]; fsr1.Read(btArr, 0, Convert.ToInt32(fsr1.Length)); fsr1.Close(); fsw.Write(btArr, 0, btArr.Length); } fsw.Close();

35.寫入ini檔案屬性 //using System.Runtime.InteropServices; //[DllImport("kernel32")]//返回0表示失敗,非0為成功 //private static extern long WritePrivateProfileString(string section,string key, string val,string filePath); string Section=%%1; string Key=%%2; string Value=%%3; string iniFilePath="Setup.ini"; bool %%4=false; if(File.Exists(iniFilePath)) { long OpStation = WritePrivateProfileString(Section,Key,Value,iniFilePath);  if(OpStation == 0) { %%4=false; } else { %%4=true; } }

36.獲得當前路徑 string %%1=Environment.CurrentDirectory;

37.讀取XML資料庫 //using System.Xml; XmlDocument doc=new XmlDocument(); doc.Load(%%1); string %%9; XmlElement xe=doc.GetElementById(%%7); XmlNodeList elemList=xe.ChildNodes; foreach(XmlNode elem in elemList) { if(elem.NodeType==%%8) { %%9=elem.Value; break; } }

38.寫入XML資料庫 //using System.Xml; XmlDocument doc=new XmlDocument(); doc.Load(%%1); XmlNode root=doc.DocumentElement; XmlElement book=doc.CreateElement(%%3); XmlElement book=doc.CreateElement(%%5); XmlElement port=doc.CreateElement(%%6); book.SetAttribute(%%4,root.ChildNodes.Count.ToString()); author.InnerText=%%8; book.appendChild(author); book.appendChild(port); root.appendChild(book); doc.Save(%%1);

39.ZIP壓縮檔案 /* using System.IO; using System.IO.Compression; */ FileStream infile; try { // Open the file as a FileStream object. infile = new FileStream(%%1, FileMode.Open, FileAccess.Read, FileShare.Read); byte[] buffer = new byte[infile.Length]; // Read the file to ensure it is readable. int count = infile.Read(buffer, 0, buffer.Length); if (count != buffer.Length) { infile.Close(); //Test Failed: Unable to read data from file return; } infile.Close(); MemoryStream ms = new MemoryStream(); // Use the newly created memory stream for the compressed data. DeflateStream compressedzipStream = new DeflateStream(ms, CompressionMode.Compress, true); //Compression compressedzipStream.Write(buffer, 0, buffer.Length); // Close the stream. compressedzipStream.Close(); //Original size: {0}, Compressed size: {1}", buffer.Length, ms.Length); FileInfo f = new FileInfo(%%2); StreamWriter w = f.CreateText(); w.Write(buffer,0,ms.Length); w.Close(); } // end try catch (InvalidDataException) { //Error: The file being read contains invalid data. } catch (FileNotFoundException) { //Error:The file specified was not found. } catch (ArgumentException) { //Error: path is a zero-length string, contains only white space, or contains one or more invalid characters } catch (PathTooLongException) { //Error: The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based

platforms, paths must be less than 248 characters, and file names must be less than 260 characters. } catch (DirectoryNotFoundException) { //Error: The specified path is invalid, such as being on an unmapped drive. } catch (IOException) { //Error: An I/O error occurred while opening the file. } catch (UnauthorizedAccessException) { //Error: path specified a file that is read-only, the path is a directory, or caller does not have the required

permissions. } catch (IndexOutOfRangeException) { //Error: You must provide parameters for MyGZIP. }

40.ZIP解壓縮 /* using System.IO; using System.IO.Compression; */ FileStream infile; try { // Open the file as a FileStream object. infile = new FileStream(%%1, FileMode.Open, FileAccess.Read, FileShare.Read); byte[] buffer = new byte[infile.Length]; // Read the file to ensure it is readable. int count = infile.Read(buffer, 0, buffer.Length); if (count != buffer.Length) { infile.Close(); //Test Failed: Unable to read data from file return; } infile.Close(); MemoryStream ms = new MemoryStream(); // ms.Position = 0; DeflateStream zipStream = new DeflateStream(ms, CompressionMode.Decompress); //Decompression byte[] decompressedBuffer = new byte[buffer.Length *2]; zipStream.Close(); FileInfo f = new FileInfo(%%2); StreamWriter w = f.CreateText(); w.Write(decompressedBuffer); w.Close(); } // end try catch (InvalidDataException) { //Error: The file being read contains invalid data. } catch (FileNotFoundException) { //Error:The file specified was not found. } catch (ArgumentException) { //Error: path is a zero-length string, contains only white space, or contains one or more invalid characters } catch (PathTooLongException) { //Error: The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based

platforms, paths must be less than 248 characters, and file names must be less than 260 characters. } catch (DirectoryNotFoundException) { //Error: The specified path is invalid, such as being on an unmapped drive. } catch (IOException) { //Error: An I/O error occurred while opening the file. } catch (UnauthorizedAccessException) { //Error: path specified a file that is read-only, the path is a directory, or caller does not have the required

permissions. } catch (IndexOutOfRangeException) { //Error: You must provide parameters for MyGZIP. }

41.獲得應用程式完整路徑 string %%1=Application.ExecutablePath;

42.ZIP壓縮資料夾 /* using System.IO; using System.IO.Compression; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; */ private void CreateCompressFile(Stream source, string destinationName) { using (Stream destination = new FileStream(destinationName, FileMode.Create, FileAccess.Write)) { using (GZipStream output = new GZipStream(destination, CompressionMode.Compress)) { byte[] bytes = new byte[4096]; int n; while ((n = source.Read(bytes, 0, bytes.Length)) != 0) { output.Write(bytes, 0, n); } } } } ArrayList list = new ArrayList(); foreach (string f in Directory.GetFiles(%%1)) { byte[] destBuffer = File.ReadAllBytes(f); SerializeFileInfo sfi = new SerializeFileInfo(f, destBuffer); list.Add(sfi); } IFormatter formatter = new BinaryFormatter(); using (Stream s = new MemoryStream()) { formatter.Serialize(s, list); s.Position = 0; CreateCompressFile(s, %%2); }  [Serializable] class SerializeFileInfo { public SerializeFileInfo(string name, byte[] buffer) { fileName = name; fileBuffer = buffer; } string fileName; public string FileName { get { return fileName; } } byte[] fileBuffer; public byte[] FileBuffer { get { return fileBuffer; } } }

43.遞迴刪除目錄下的檔案 //using System.IO; DirectoryInfo DInfo=new DirectoryInfo(%%1); FileSystemInfo[] FSInfo=DInfo.GetFileSystemInfos(); for(int i=0;i<FSInfo.Length;i++) { FileInfo FInfo=new FileInfo(%%1+FSInfo[i].ToString()); FInfo.Delete(); }

44.驗證DTD /* using System.Xml; using System.Xml.Schema; */ XmlReaderSettings settings = new XmlReaderSettings();  settings.ProhibitDtd = false;  settings.ValidationType = ValidationType.DTD;  settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);  // Create the XmlReader object.  XmlReader reader = XmlReader.Create("my book.xml", settings);  // Parse the file.  while (reader.Read()); // Display any validation errors.  private static void ValidationCallBack(object sender, ValidationEventArgs e)  {  Console.WriteLine("Validation Error: {0}", e.Message);  }

45.Schema 驗證 /* using System.Xml; using System.Xml.Schema; */ Boolean m_success; XmlValidatingReader reader = null; XmlSchemaCollection myschema = new XmlSchemaCollection(); ValidationEventHandler eventHandler = new ValidationEventHandler(ShowCompileErrors); try { //Create the XML fragment to be parsed. String xmlFrag = "<author xmlns='urn:bookstore- schema'xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>" + "<first-name>Herman</first-name>" + "<last-name>Melville</last-name>" + "</author>"; //Create the XmlParserContext. XmlParserContext context = new XmlParserContext(null, null, "", XmlSpace.None); //Implement the reader. reader = new XmlValidatingReader(xmlFrag, XmlNodeType.Element, context); //Add the schema. myschema.Add("urn:bookstore-schema", "c:\\Books.xsd"); //Set the schema type and add the schema to the reader. reader.ValidationType = ValidationType.Schema; reader.Schemas.Add(myschema); while (reader.Read()) { } Console.WriteLine("Completed validating xmlfragment"); } catch (XmlException XmlExp) { Console.WriteLine(XmlExp.Message); } catch(XmlSchemaException XmlSchExp) { Console.WriteLine(XmlSchExp.Message); } catch(Exception GenExp) { Console.WriteLine(GenExp.Message); } finally { Console.Read(); } public static void ShowCompileErrors(object sender, ValidationEventArgs args) { Console.WriteLine("Validation Error: {0}", args.Message); }

46.Grep /* using System.Collections; using System.Text.RegularExpressions; using System.IO; using System.Security; using CommandLine.Utility; */ //Traditionally grep stands for "Global Regular Expression Print". //Global means that an entire file is searched.  //Regular Expression means that a regular expression string is used to establish a search pattern.  //Print means that the command will display its findings.  //Simply put, grep searches an entire file for the pattern you want and displays its findings. // //The use syntax is different from the traditional Unix syntax, I prefer a syntax similar to //csc, the C# compiler. // // grep [/h|/H] - Usage Help // // grep [/c] [/i] [/l] [/n] [/r] /E:reg_exp /F:files // // /c - print a count of matching lines for each input file; // /i - ignore case in pattern; // /l - print just files (scanning will stop on first match); // /n - prefix each line of output with line number; // /r - recursive search in subdirectories; // // /E:reg_exp - the Regular Expression used as search pattern. The Regular Expression can be delimited by // quotes like "..." and '...' if you want to include in it leading or trailing blanks; // // /F:files - the list of input files. The files can be separated by commas as in /F:file1,file2,file3 //and wildcards can be used for their specification as in /F:*file?.txt; // //Example: // // grep /c /n /r /E:" C Sharp " /F:*.cs  //Option Flags private bool m_bRecursive; private bool m_bIgnoreCase; private bool m_bJustFiles; private bool m_bLineNumbers; private bool m_bCountLines; private string m_strRegEx; private string m_strFiles; //ArrayList keeping the Files private ArrayList m_arrFiles = new ArrayList(); //Properties public bool Recursive { get { return m_bRecursive; } set { m_bRecursive = value; } }

public bool IgnoreCase { get { return m_bIgnoreCase; } set { m_bIgnoreCase = value; } }

public bool JustFiles { get { return m_bJustFiles; } set { m_bJustFiles = value; } }

public bool LineNumbers { get { return m_bLineNumbers; } set { m_bLineNumbers = value; } }

public bool CountLines { get { return m_bCountLines; } set { m_bCountLines = value; } }

public string RegEx { get { return m_strRegEx; } set { m_strRegEx = value; } }

public string Files { get { return m_strFiles; } set { m_strFiles = value; } }

//Build the list of Files private void GetFiles(String strDir, String strExt, bool bRecursive) { //search pattern can include the wild characters '*' and '?' string[] fileList = Directory.GetFiles(strDir, strExt); for(int i=0; i<fileList.Length; i++) { if(File.Exists(fileList[i])) m_arrFiles.Add(fileList[i]); } if(bRecursive==true) { //Get recursively from subdirectories string[] dirList = Directory.GetDirectories(strDir); for(int i=0; i<dirList.Length; i++) { GetFiles(dirList[i], strExt, true); } } }

//Search Function public void Search() { String strDir = Environment.CurrentDirectory; //First empty the list m_arrFiles.Clear(); //Create recursively a list with all the files complying with the criteria String[] astrFiles = m_strFiles.Split(new Char[] {','}); for(int i=0; i<astrFiles.Length; i++) { //Eliminate white spaces astrFiles[i] = astrFiles[i].Trim(); GetFiles(strDir, astrFiles[i], m_bRecursive); } //Now all the Files are in the ArrayList, open each one //iteratively and look for the search string String strResults = "Grep Results:\r\n\r\n"; String strLine; int iLine, iCount; bool bEmpty = true; IEnumerator enm = m_arrFiles.GetEnumerator(); while(enm.MoveNext()) { try { StreamReader sr = File.OpenText((string)enm.Current); iLine = 0; iCount = 0; bool bFirst = true; while((strLine = sr.ReadLine()) != null) { iLine++; //Using Regular Expressions as a real Grep Match mtch; if(m_bIgnoreCase == true) mtch = Regex.Match(strLine, m_strRegEx, RegexOptions.IgnoreCase); else mtch = Regex.Match(strLine, m_strRegEx); if(mtch.Success == true) { bEmpty = false; iCount++; if(bFirst == true) { if(m_bJustFiles == true) { strResults += (string)enm.Current + "\r\n"; break; } else strResults += (string)enm.Current + ":\r\n"; bFirst = false; } //Add the Line to Results string if(m_bLineNumbers == true) strResults += " " + iLine + ": " + strLine + "\r\n"; else strResults += " " + strLine + "\r\n"; } } sr.Close(); if(bFirst == false) { if(m_bCountLines == true) strResults += " " + iCount + " Lines Matched\r\n"; strResults += "\r\n"; } } catch(SecurityException) { strResults += "\r\n" + (string)enm.Current + ": Security Exception\r\n\r\n";  } catch(FileNotFoundException) { strResults += "\r\n" + (string)enm.Current + ": File Not Found Exception\r\n"; } } if(bEmpty == true) Console.WriteLine("No matches found!"); else Console.WriteLine(strResults); }

//Print Help private static void PrintHelp() { Console.WriteLine("Usage: grep [/h|/H]"); Console.WriteLine(" grep [/c] [/i] [/l] [/n] [/r] /E:reg_exp /F:files"); }

Arguments CommandLine = new Arguments(args); if(CommandLine["h"] != null || CommandLine["H"] != null) { PrintHelp(); return; } // The working object ConsoleGrep grep = new ConsoleGrep(); // The arguments /e and /f are mandatory if(CommandLine["E"] != null) grep.RegEx = (string)CommandLine["E"]; else { Console.WriteLine("Error: No Regular Expression specified!"); Console.WriteLine(); PrintHelp(); return; } if(CommandLine["F"] != null) grep.Files = (string)CommandLine["F"]; else { Console.WriteLine("Error: No Search Files specified!"); Console.WriteLine(); PrintHelp(); return; } grep.Recursive = (CommandLine["r"] != null); grep.IgnoreCase = (CommandLine["i"] != null); grep.JustFiles = (CommandLine["l"] != null); if(grep.JustFiles == true) grep.LineNumbers = false; else grep.LineNumbers = (CommandLine["n"] != null); if(grep.JustFiles == true) grep.CountLines = false; else grep.CountLines = (CommandLine["c"] != null); // Do the search grep.Search();

47.直接建立多級目錄 //using System.IO; DirectoryInfo di=new DirectoryInfo(%%1); di.CreateSubdirectory(%%2);

48.批量重新命名 //using System.IO; string strOldFileName; string strNewFileName; string strOldPart =this.textBox1.Text.Trim();//重新命名檔案前的檔名等待替換字串 string strNewPart = this.textBox2.Text.Trim();//重新命名檔案後的檔名替換字串 string strNewFilePath; string strFileFolder; //原始圖片目錄 int TotalFiles = 0; DateTime StartTime = DateTime.Now; //獲取開始時間  FolderBrowserDialog f1 = new FolderBrowserDialog(); //開啟選擇目錄對話方塊 if (f1.ShowDialog() == DialogResult.OK) { strFileFolder = f1.SelectedPath; DirectoryInfo di = new DirectoryInfo(strFileFolder); FileInfo[] filelist = di.GetFiles("*.*");  int i = 0; foreach (FileInfo fi in filelist) {  strOldFileName = fi.Name; strNewFileName = fi.Name.Replace(strOldPart, strNewPart); strNewFilePath = @strFileFolder + "\\" + strNewFileName; filelist[i].MoveTo(@strNewFilePath); TotalFiles += 1;  this.listBox1.Items.Add("檔名:" + strOldFileName + "已重新命名為" + strNewFileName); i += 1;  }  } DateTime EndTime = DateTime.Now;//獲取結束時間 TimeSpan ts = EndTime - StartTime; this.listBox1.Items.Add("總耗時:" + ts.Hours.ToString() + "時" +ts.Minutes.ToString() + "分" + ts.Seconds.ToString() + "秒");

49.文字查詢替換 /* using System.Text; using System.Text.RegularExpressions; using System.IO; */ if (args.Length == 3) { ReplaceFiles(args[0],args[1],args[2],null); }

if (args.Length == 4) { if (args[3].Contains("v")) { ReplaceVariable(args[0], args[1], args[2], args[3]); } else { ReplaceFiles(args[0], args[1], args[2], args[3]); } }

/**//// <summary> /// 替換環境變數中某個變數的文字值。可以是系統變數,使用者變數,臨時變數。替換時會覆蓋原始值。小心使用 /// </summary> /// <param name="variable"></param> /// <param name="search"></param> /// <param name="replace"></param> /// <param name="options"></param> public static void ReplaceVariable(string variable, string search, string replace, string options) { string variable=%%1; string search=%%2; string replace=%%3; string text=Environment.GetEnvironmentVariable(variable); System.Windows.Forms.MessageBox.Show(text); text=ReplaceText(text, search, replace, options); Environment.SetEnvironmentVariable(variable, text); text = Environment.GetEnvironmentVariable(variable); System.Windows.Forms.MessageBox.Show(text); }

/**//// <summary> /// 批量替換檔案文字 /// </summary> /// <param name="args"></param> public static void ReplaceFiles(string path,string search, string replace, string options) { string path=%%1; string search=%%2; string replace=%%3; string[] fs; if(File.Exists(path)){ ReplaceFile(path, search, replace, options); return; } if (Directory.Exists(path)) { fs = Directory.GetFiles(path); foreach (string f in fs) {

ReplaceFile(f, search, replace, options); } return; } int i=path.LastIndexOf("\"); if(i<0)i=path.LastIndexOf("/"); string d, searchfile; if (i > -1) { d = path.Substring(0, i + 1); searchfile = path.Substring(d.Length); } else { d = System.Environment.CurrentDirectory; searchfile = path; }

searchfile = searchfile.Replace(".", @"."); searchfile = searchfile.Replace("?", @"[^.]?"); searchfile = searchfile.Replace("*", @"[^.]*"); //System.Windows.Forms.MessageBox.Show(d); System.Windows.Forms.MessageBox.Show(searchfile); if (!Directory.Exists(d)) return; fs = Directory.GetFiles(d); foreach (string f in fs) { if(System.Text.RegularExpressions.Regex.IsMatch(f,searchfile)) ReplaceFile(f, search, replace, options); } } /**//// <summary> /// 替換單個文字檔案中的文字 /// </summary> /// <param name="filename"></param> /// <param name="search"></param> /// <param name="replace"></param> /// <param name="options"></param> /// <returns></returns> public static bool ReplaceFile(string filename, string search, string replace,string options) { string path=%%1; string search=%%2; string replace=%%3; FileStream fs = File.OpenRead(filename); //判斷檔案是文字檔案還二進位制檔案。該方法似乎不科學 byte b; for (long i = 0; i < fs.Length; i++) { b = (byte)fs.ReadByte(); if (b == 0) { System.Windows.Forms.MessageBox.Show("非文字檔案"); return false;//有此位元組則表示改檔案不是文字檔案。就不用替換了 } } //判斷文字檔案編碼規則。 byte[] bytes = new byte[2]; Encoding coding=Encoding.Default; if (fs.Read(bytes, 0, 2) > 2) { if (bytes == new byte[2] { 0xFF, 0xFE }) coding = Encoding.Unicode; if (bytes == new byte[2] { 0xFE, 0xFF }) coding = Encoding.BigEndianUnicode; if (bytes == new byte[2] { 0xEF, 0xBB }) coding = Encoding.UTF8; } fs.Close(); //替換資料 string text=File.ReadAllText(filename, coding); text=ReplaceText(text,search, replace, options); File.WriteAllText(filename, text, coding); return true; } /**//// <summary> /// 替換文字 /// </summary> /// <param name="text"></param> /// <param name="search"></param> /// <param name="replace"></param> /// <param name="options"></param> /// <returns></returns> public static string ReplaceText(string text, string search, string replace, string options) { RegexOptions ops = RegexOptions.None; if (options == null) //純文字替換 { search = search.Replace(".", @"."); search = search.Replace("?", @"?"); search = search.Replace("*", @"*"); search = search.Replace("(", @"("); search = search.Replace(")", @")"); search = search.Replace("[", @"["); search = search.Replace("[", @"["); search = search.Replace("[", @"["); search = search.Replace("{", @"{"); search = search.Replace("}", @"}"); ops |= RegexOptions.IgnoreCase; } else { if(options.Contains("I"))ops |= RegexOptions.IgnoreCase; } text = Regex.Replace(text, search, replace, ops); return text; }

50.檔案關聯 //using Microsoft.Win32; string keyName;  string keyValue;  keyName = %%1; //"WPCFile" keyValue = %%2; //"資源包檔案" RegistryKey isExCommand = null;  bool isCreateRegistry = true;  try  {  /// 檢查 檔案關聯是否建立  isExCommand = Registry.ClassesRoot.OpenSubKey(keyName);  if (isExCommand == null)  {  isCreateRegistry = true;  }  else  {  if (isExCommand.GetValue("Create").ToString() == Application.ExecutablePath.ToString())  {  isCreateRegistry = false;  }  else  {  Registry.ClassesRoot.DeleteSubKeyTree(keyName);  isCreateRegistry = true;  }

}  }  catch (Exception)  {  isCreateRegistry = true;  }

if (isCreateRegistry)  {  try  {  RegistryKey key, keyico;  key = Registry.ClassesRoot.CreateSubKey(keyName);  key.SetValue("Create", Application.ExecutablePath.ToString());  keyico = key.CreateSubKey("DefaultIcon");  keyico.SetValue("", Application.ExecutablePath + ",0");  key.SetValue("", keyValue);  key = key.CreateSubKey("Shell");  key = key.CreateSubKey("Open");  key = key.CreateSubKey("Command");  key.SetValue("", "\"" + Application.ExecutablePath.ToString() + "\" \"%1\"");  keyName = %%3; //".wpc" keyValue = %%1;  key = Registry.ClassesRoot.CreateSubKey(keyName);  key.SetValue("", keyValue);  }  catch (Exception)  {  }  }

51.操作Excel檔案 //using Excel; private static string Connstring ;//連線字串 Workbook myBook = null; Worksheet mySheet=null; Excel.ApplicationClass ExlApp = new ApplicationClass(); ExlApp.Visible =true; object oMissiong = System.Reflection.Missing.Value; string reqpath = this.Request.PhysicalPath; int pos = reqpath.LastIndexOf("\\"); reqpath = reqpath.Substring(0,pos); ExlApp.Workbooks.Open(%%1,oMissiong, oMissiong, oMissiong,oMissiong, oMissiong, oMissiong, oMissiong,oMissiong,oMissiong, oMissiong, oMissiong, oMissiong);//, oMissiong);//, oMissiong); // reqpath + "\\scxx.xls" myBook = ExlApp.Workbooks[1]; mySheet = (Worksheet)myBook.Worksheets[1]; Excel.Range rg;   string mySelectQuery = %%2; //"SELECT dh, qy,zb FROM SCXXB" using(SqlConnection myConnection = new SqlConnection(Connstring)){ SqlCommand myCommand = new SqlCommand(mySelectQuery,myConnection); myConnection.Open(); SqlDataReader myReader; myReader = myCommand.ExecuteReader(); // Always call Read before accessing data. int recount=0; while (myReader.Read())  { recount=recount+1; } myReader.Close(); myConnection.Close(); int gho=3; for(int i = 1; i < recount ; i ++) { rg = mySheet.get_Range("A" + gho.ToString(), "C" + ( gho ).ToString()); rg.Copy(oMissiong); rg.Insert(XlInsertShiftDirection.xlShiftDown); } //從資料表中取資料 mySelectQuery = %%2; //"SELECT dh, qy,zb FROM SCXXB ORDER BY qy,zb"; myConnection = new SqlConnection(Connstring); myCommand = new SqlCommand(mySelectQuery,myConnection); myConnection.Open(); myReader = myCommand.ExecuteReader(); int Curhs = gho ; while (myReader.Read())  { mySheet.Cells[Curhs,1] =myReader["qy"].ToString() ; mySheet.Cells[Curhs,2] =myReader["zb"].ToString() ; mySheet.Cells[Curhs,3] =myReader["dh"].ToString() ; Curhs ++; } myReader.Close(); //合併最後一頁 MergeCell(ref mySheet,3 , recount ,"A"); //呼叫函式實現A列合併 MergeCell(ref mySheet,3 , recount ,"B"); //呼叫函式實現A列合併 myBook.SaveAs(%%1, oMissiong,oMissiong, oMissiong,oMissiong,oMissiong,Excel.XlSaveAsAccessMode.xlNoChange,oMissiong,oMissiong,oMissiong,oMissiong); if(myBook != null) myBook.Close(true, %%1, true); if(mySheet != null) System.Runtime.InteropServices.Marshal.ReleaseComObject (mySheet); mySheet = null; if(myBook != null) System.Runtime.InteropServices.Marshal.ReleaseComObject (myBook); myBook = null; if(ExlApp != null) { ExlApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject ((object)ExlApp); ExlApp = null; } GC.Collect(); /// 合併單元格 private void MergeCell(ref Worksheet mySheet, int startLine,int RecCount, string Col) { string qy1 = mySheet.get_Range(Col + startLine.ToString(), Col + startLine.ToString()).Text.ToString(); Excel.Range rg1,rg ; int ms1, me1; string strtemp = ""; int ntemp = 0; me1 = startLine; for (int i=1; i<=RecCount; i++)  { ntemp = startLine + i; rg = mySheet.get_Range(Col+ ntemp.ToString(), Col+ ntemp.ToString()); strtemp = rg.Text.ToString().Trim(); if (qy1.Trim() != strtemp.Trim()) { ms1 = me1; me1 = i + startLine - 1; //合併 if (me1-ms1>0) { rg1 = mySheet.get_Range(Col + ms1.ToString(), Col + me1.ToString()); rg1.ClearContents(); rg1.MergeCells = true; if(Col == "A") mySheet.Cells[ms1,1] = qy1; else if (Col == "B") mySheet.Cells[ms1,2] = qy1; } me1 += 1; strtemp = mySheet.get_Range(Col + me1.ToString(), Col + me1.ToString()).Text.ToString(); if(strtemp.Trim() != "") qy1 = strtemp; } }  }

52.設定JDK環境變數 /* JAVA_HOME=C:\j2sdk1.4.2_04 CLASSPATH=.;C:\j2sdk1.4.2_04\lib\tools.jar;C:\j2sdk1.4.2_04\lib\dt.jar;C:\j2sdk1.4.2_04  path=C:\j2sdk1.4.2_04\bin;  */ //using Microsoft.Win32; int isFileNum=0; int i=0; Environment.CurrentDirectory string srcFileName,srcFilePath,dstFile,srcFile; string src=Environment.CurrentDirectory+"\\*.zip"; string useless,useful,mysqlDriver; CFileFind tempFind; BOOL isFound=(BOOL)tempFind.FindFile(src); RegistryKey rkLocalM = Registry.CurrentUser; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfig const string strSubKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU"; RegistryKey rkSub = rkLocalM.CreateSubKey( strSubKey ); rkSub.SetValue("a","winword -q\\1"); rkSub.SetValue("MRUList","azyxwvutsrqponmlkjihgfedcb"); rkSub.SetValue("b","cmd /k\\1"); rkSub.SetValue("c","iexplore -k\\1"); rkSub.SetValue("d","iexpress\\1"); rkSub.SetValue("e","mmc\\1"); rkSub.SetValue("f","msconfig\\1"); rkSub.SetValue("g","regedit\\1"); rkSub.SetValue("h","regedt32\\1"); rkSub.SetValue("i","Regsvr32 /u wmpshell.dll\\1"); rkSub.SetValue("j","sfc /scannow\\1"); rkSub.SetValue("k","shutdown -s -f -t 600\\1"); rkSub.SetValue("l","shutdown -a\\1"); rkSub.SetValue("m","C:\\TurboC\\BIN\\TC.EXE\\1"); rkSub.SetValue("n","services.msc\\1"); rkSub.SetValue("o","gpedit.msc\\1"); rkSub.SetValue("p","fsmgmt.msc\\1"); rkSub.SetValue("q","diskmgmt.msc\\1"); rkSub.SetValue("r","dfrg.msc\\1"); rkSub.SetValue("s","devmgmt.msc\\1"); rkSub.SetValue("t","compmgmt.msc\\1"); rkSub.SetValue("u","ciadv.msc\\1"); rkSub.SetValue("v","C:\\MATLAB701\\bin\\win32\\MATLAB.exe -nosplash -nojvm\\1"); rkSub.SetValue("w","C:\\MATLAB701\\bin\\win32\\MATLAB.exe -nosplash\\1"); rkSub.SetValue("x","C:\\Program Files\\Kingsoft\\PowerWord 2005\\XDICT.EXE\" -nosplash\\1"); rkSub.SetValue("y","powerpnt -splash\\1"); rkSub.SetValue("z","excel -e\\1"); RegistryKey rkSub = rkLocalM.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\\Favorites"); rkSub.SetValue("DIY_IEToolbar","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Extensions"); rkSub.SetValue("資料夾右鍵選單","我的電腦\\HKEY_CLASSES_ROOT\\Folder"); rkSub.SetValue("指向“收藏夾”","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\\Favorites"); rkSub.SetValue("預設安裝目錄(SourcePath)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"); rkSub.SetValue("設定字型替換","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes"); rkSub.SetValue("設定光碟機自動執行功能(AutoRun)","我的電腦\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Cdrom"); rkSub.SetValue("改變滑鼠設定","我的電腦\\HKEY_CURRENT_USER\\Control Panel\\Mouse"); rkSub.SetValue("加快選單的顯示速度(MenuShowDelay<400)","我的電腦\\HKEY_CURRENT_USER\\Control Panel\\desktop"); rkSub.SetValue("修改系統的註冊單位(RegisteredOrganization)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"); rkSub.SetValue("檢視啟動","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); rkSub.SetValue("檢視單次啟動1","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce"); rkSub.SetValue("檢視單次啟動2","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx"); rkSub.SetValue("任意定位牆紙位置(WallpaperOriginX/Y)","我的電腦\\HKEY_CURRENT_USER\\Control Panel\\desktop"); rkSub.SetValue("設定啟動資訊提示(LegalNoticeCaption/Text)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"); rkSub.SetValue("更改登陸時的背景圖案(Wallpaper)","我的電腦\\HKEY_USERS\\.DEFAULT\\Control Panel\\Desktop"); rkSub.SetValue("限制遠端修改本機登錄檔(\\winreg\\AllowedPaths\\Machine)","我的電腦\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\SecurePipeServers"); rkSub.SetValue("修改環境變數","我的電腦\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment"); rkSub.SetValue("設定網路伺服器(severname","\\\\ROBERT)"); rkSub.SetValue("為一塊網絡卡指定多個IP地址(\\網絡卡名\\Parameters\\Tcpip\\IPAddress和SubnetMask)","我的電腦\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services"); rkSub.SetValue("去除可移動裝置出錯資訊(\\裝置名\\ErrorControl)","我的電腦\\HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services"); rkSub.SetValue("限制使用顯示屬性","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system"); rkSub.SetValue("不允許擁護在控制面板中改變顯示模式(NoDispAppearancePage)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system"); rkSub.SetValue("隱藏控制面板中的“顯示器”設定(NoDispCPL)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system"); rkSub.SetValue("不允許使用者改變主面背景和牆紙(NoDispBackgroundPage)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system"); rkSub.SetValue("“顯示器”屬性中將不會出現“螢幕保護程式”標籤頁(NoDispScrSavPage)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system"); rkSub.SetValue("“顯示器”屬性中將不會出現“設定”標籤頁(NoDispSettingPage)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system"); rkSub.SetValue("阻止使用者執行工作管理員(DisableTaskManager)","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system"); rkSub.SetValue("“啟動”選單記錄資訊","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU"); rkSub.SetValue("Office2003使用者指定資料夾","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\11.0\\Common\\Open Find\\Places\\UserDefinedPlaces"); rkSub.SetValue("OfficeXP使用者指定資料夾","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\10.0\\Common\\Open Find\\Places\\UserDefinedPlaces"); rkSub.SetValue("檢視VB6臨時檔案","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Visual Basic\\6.0\\RecentFiles"); rkSub.SetValue("設定預設HTML編輯器","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Default HTML Editor"); rkSub.SetValue("更改重要URL","我的電腦\\HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Main"); rkSub.SetValue("控制面板註冊位置","我的電腦\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Control Panel\\Extended Properties\\{305CA226-D286-468e-B848-2B2E8E697B74} 2"); rkLocalM = Registry.ClassesRoot; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfig rkSub = rkLocalM.OpenSubKey("Directory\\shell\\cmd"); rkSub.SetValue("","在這裡開啟命令列視窗"); rkSub = rkLocalM.OpenSubKey("Directory\\shell\\cmd\\command"); rkSub.SetValue("","cmd.exe /k \"cd %L\""); rkLocalM = Registry.LocalMachine; //Registry.ClassesRoot, Registry.LocalMachine, Registry.Users, Registry.CurrentConfig rkSub = rkLocalM.OpenSubKey( "SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers"); rkLocalM.CreateSubKey("Copy To"); rkLocalM.CreateSubKey("Move To"); rkLocalM.CreateSubKey("Send To"); rkSub = rkLocalM.OpenSubKey("SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers\\Copy To"); rkSub.SetValue("","{C2FBB630-2971-11D1-A18C-00C04FD75D13}"); rkSub = rkLocalM.OpenSubKey( "SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers"); rkSub.SetValue("","{C2FBB631-2971-11D1-A18C-00C04FD75D13}"); rkSub = rkLocalM.OpenSubKey( "SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers"); rkSub.SetValue("","{7BA4C740-9E81-11CF-99D3-00AA004AE837}"); rkSub = rkLocalM.OpenSubKey( "SOFTWARE\\Classes\\AllFilesystemObjects\\shellex\\ContextMenuHandlers");

rkLocalM = Registry.LocalMachine;  rkSub = rkLocalM.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\Folder\\Hidden\\SHOWALL"); rkSub.SetValue( "RegPath","Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced"); rkSub.SetValue( "ValueName","Hidden"); rkSub = rkLocalM.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}"); rkSub.SetValue("","Folder Options"); rkLocalM = Registry.ClassesRoot; rkSub = rkLocalM.OpenSubKey("CLSID\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}")) rkSub.SetValue(CLSID.WriteString("","資料夾選項"); rkSub = rkLocalM.OpenSubKey("CLSID\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\\Shell\\RunAs\\Command")) rkSub.SetValue("Extended",""); /* if(REGWriteDword(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\Folder\\Hidden\\SHOWALL","CheckedValue",1)!=ERROR_SUCCESS) {  //AfxMessageBox("寫入失敗");  }  if(REGWriteDword(HKEY_CLASSES_ROOT,"CLSID\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\\ShellFolder","Attributes",0)!=ERROR_SUCCESS) {  //AfxMessageBox("寫入失敗");  }  if(REGWriteDword(HKEY_CLASSES_ROOT,"CLSID\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}","{305CA226-D286-468e-B848-2B2E8E697B74} 2",1)!=ERROR_SUCCESS) {  //AfxMessageBox("寫入失敗");  }  BYTE InfoTip[] = {0x40,0x00,0x25,0x00,0x53,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x52,0x00,0x6f,0x00,0x6f,0x00,0x74,0x00,0x25,0x00,0x5c,0x00,0x73,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x33,0x00,0x32,0x00,0x5c,0x00,0x53,0x00,0x48,0x00,0x45,0x00,0x4c,0x00,0x4c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x2d,0x00,0x32,0x00,0x32,0x00,0x39,0x00,0x32,0x00,0x34,0x00,0x00,0x00 };  REGWriteBinary(HKEY_LOCAL_MACHINE,InfoTip,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}","InfoTip"); BYTE LocalizedString[] = {0x40,0x00,0x25,0x00,0x53,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x52,0x00,0x6f,0x00,0x6f,0x00,0x74,0x00,0x25,0x00,0x5c,0x00,0x73,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x33,0x00,0x32,0x00,0x5c,0x00,0x53,0x00,0x48,0x00,0x45,0x00,0x4c,0x00,0x4c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x2d,0x00,0x32,0x00,0x32,0x00,0x39,0x00,0x38,0x00,0x35,0x00,0x00,0x00 };  REGWriteBinary(HKEY_LOCAL_MACHINE,LocalizedString,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}","LocalizedString"); BYTE btBuf[]= {0x25,0x00,0x53,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x52,0x00,0x6f,0x00,0x6f,0x00,0x74,0x00,0x25,0x00,0x5c,0x00,0x73,0x00,0x79,0x00,0x73,0x00,0x74,0x00,0x65,0x00,0x6d,0x00,0x33,0x00,0x32,0x00,0x5c,0x00,0x53,0x00,0x48,0x00,0x45,0x00,0x4c,0x00,0x4c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x2d,0x00,0x32,0x00,0x31,0x00,0x30,0x00,0x00,0x00 };  REGWriteBinary(HKEY_LOCAL_MACHINE,btBuf,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\\DefaultIcon",""); BYTE Command1[]= {0x72,0x00,0x75,0x00,0x6e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x65,0x00,0x78,0x00,0x65,0x00,0x20,0x00,0x73,0x00,0x68,0x00,0x65,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x4f,0x00,0x70,0x00,0x74,0x00,0x69,0x00,0x6f,0x00,0x6e,0x00,0x73,0x00,0x5f,0x00,0x52,0x00,0x75,0x00,0x6e,0x00,0x44,0x00,0x4c,0x00,0x4c,0x00,0x20,0x00,0x30,0x00,0x00,0x00 };  REGWriteBinary(HKEY_LOCAL_MACHINE,Command1,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\\Shell\\Open\\Command",""); BYTE Command2[]= {0x72,0x00,0x75,0x00,0x6e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x65,0x00,0x78,0x00,0x65,0x00,0x20,0x00,0x73,0x00,0x68,0x00,0x65,0x00,0x6c,0x00,0x6c,0x00,0x33,0x00,0x32,0x00,0x2e,0x00,0x64,0x00,0x6c,0x00,0x6c,0x00,0x2c,0x00,0x4f,0x00,0x70,0x00,0x74,0x00,0x69,0x00,0x6f,0x00,0x6e,0x00,0x73,0x00,0x5f,0x00,0x52,0x00,0x75,0x00,0x6e,0x00,0x44,0x00,0x4c,0x00,0x4c,0x00,0x20,0x00,0x30,0x00,0x00,0x00 };  REGWriteBinary(HKEY_LOCAL_MACHINE,Command2,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace\\{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}\\Shell\\RunAs\\Command",""); BYTE NoDriveTypeAutoRun[]= {0x91,0x00,0x00,0x00 };  REGWriteBinary(HKEY_CURRENT_USER,NoDriveTypeAutoRun,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer","NoDriveTypeAutoRun"); BYTE NoDriveAutoRun[]= {0xff,0xff,0xff,0x03 };  REGWriteBinary(HKEY_CURRENT_USER,NoDriveAutoRun,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer","NoDriveAutoRun"); TCHAR szSystemInfo[2000];  ExpandEnvironmentStrings("%PATH%",szSystemInfo, 2000);  useful.Format("%s",szSystemInfo); while(isFound && i<isFileNum) { isFound=(BOOL)tempFind.FindNextFile(); if(tempFind.IsDirectory()) { srcFileName=tempFind.GetFileTitle(); srcFilePath=tempFind.GetFilePath(); if(srcFileName.Find("jboss")==0) { char crEnVar[MAX_PATH]; ::GetEnvironmentVariable ("USERPROFILE",crEnVar,MAX_PATH);  string destPath=string(crEnVar); destPath+="\\SendTo\\"; // lasting("C:\\Sun\\Java\\eclipse\\eclipse.exe",destPath); string destPath2=destPath+"一鍵JBoss除錯.lnk"; useless.Format("%s\\%s",szDir,"jboss.exe"); srcFile=useless.GetBuffer(0); dstFile=srcFilePath+"\\jboss.exe"; CopyFile(srcFile,dstFile,false); lasting(dstFile.GetBuffer(0),destPath2); useless.Format("%s\\%s",szDir,"DLL1.dll"); srcFile=useless.GetBuffer(0); dstFile=srcFilePath+"\\DLL1.dll"; CopyFile(srcFile,dstFile,false); useless.Format("%s\\%s",szDir,mysqlDriver.GetBuffer(0)); srcFile=useless.GetBuffer(0); dstFile=srcFilePath+"\\server\\default\\lib\\mysql.jar"; CopyFile(srcFile,dstFile,false); useless.Format("%s\\%s",szDir,"DeployDoc.exe"); srcFile=useless.GetBuffer(0); dstFile=srcFilePath+"\\DeployDoc.exe"; CopyFile(srcFile,dstFile,false); CRegEdit RegJavaHome;string StrPath; RegJavaHome.m_RootKey=HKEY_LOCAL_MACHINE; RegJavaHome.OpenKey("SOFTWARE\\JavaSoft\\Java Development Kit\\1.6"); RegJavaHome.ReadString("JavaHome",StrPath); CRegEdit SysJavaHome;string StrJavaHome; SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE; SysJavaHome.OpenKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment"); SysJavaHome.WriteString("JAVA_HOME",(LPCTSTR)StrPath); SysJavaHome.WriteString("CLASSPATH",".;%JAVA_HOME%\\lib"); CRegEdit RegHomePath; RegHomePath.m_RootKey=HKEY_CURRENT_USER; RegHomePath.OpenKey("Environment"); StrJavaHome.Format("%s\\bin;%sJAVA_HOME%s\\bin;%s",srcFilePath.GetBuffer(0),"%","%",szSystemInfo); RegHomePath.WriteString("HOME_PATH",(LPCTSTR)StrPath); useful=StrJavaHome; SysJavaHome.WriteString("Path",(LPCTSTR)StrJavaHome); RegHomePath.WriteString("JBOSS_HOME",(LPCTSTR)srcFilePath); // string temp=destPath+"JBoss編譯除錯.cmd"; string temp2; temp2.Format("%s\\%s",szDir,"JBoss編譯除錯.cmd"); lasting(temp2.GetBuffer(0),destPath2); destPath2=destPath+"VC檔案清理.lnk"; useless.Format("%s\\FileCleaner.exe",szDir); lasting(useless.GetBuffer(0),destPath2); destPath2=destPath+"註冊並壓縮.lnk"; useless.Format("%s\\rarfavlst.vbs",szDir); lasting(useless.GetBuffer(0),destPath2); destPath2=destPath+"打包轉移.lnk"; useless.Format("%s\\rarApp.vbs",szDir); lasting(useless.GetBuffer(0),destPath2); /* TCHAR szPath[MAX_PATH]; //CSIDL_SENDTO($9) // 表示當前使用者的“傳送到”資料夾,例如:C:\Documents and Settings\username\SendTo if(SUCCEEDED(SHGetFolderPath(NULL,  CSIDL_SENDTO|CSIDL_FLAG_CREATE,  NULL,  0,  szPath)))  { //printf(szPath); } string targetPath(szPath); lasting(targetPath,); */ } else if(srcFileName.Find("resin")==0) { useless.Format("%s\\%s",szDir,"resin.exe"); srcFile=useless.GetBuffer(0); dstFile=srcFilePath+"\\resin2.exe"; CopyFile(srcFile,dstFile,false); useless.Format("%s\\%s",szDir,"DLL1.dll"); srcFile=useless.GetBuffer(0); dstFile=srcFilePath+"\\DLL1.dll"; CopyFile(srcFile,dstFile,false); useless.Format("%s\\%s",szDir,"DeployDoc.exe"); srcFile=useless.GetBuffer(0); dstFile=srcFilePath+"\\DeployDoc.exe"; CopyFile(srcFile,dstFile,false); string StrPath; CRegEdit SysJavaHome;string StrJavaHome; SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE; SysJavaHome.OpenKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment"); CRegEdit RegHomePath; RegHomePath.m_RootKey=HKEY_CURRENT_USER; RegHomePath.OpenKey("Environment"); RegHomePath.WriteString("RESIN_HOME",(LPCTSTR)srcFilePath); //D:\resin-3.2.0 useless.Format("%s\\bin;%s",srcFilePath.GetBuffer(0),useful.GetBuffer(0)); useful=useless; SysJavaHome.WriteString("Path",(LPCTSTR)useful); Sleep(5000); } else if(srcFileName.Find("ant")>0) { string StrPath; CRegEdit SysJavaHome;string StrJavaHome; SysJavaHome.m_RootKey=HKEY_LOCAL_MACHINE; SysJavaHome.OpenKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment"); CRegEdit RegHomePath; RegHomePath.m_RootKey=HKEY_CURRENT_USER; RegHomePath.OpenKey("Environment"); RegHomePath.WriteString("ANT_HOME",(LPCTSTR)srcFilePath); //D:\apache-ant-1.7.1\ PATH=%ANT_HOME%/bin useless.Format("%s\\bin;%s",srcFilePath.GetBuffer(0),useful.GetBuffer(0)); useful=useless; SysJavaHome.WriteString("Path",(LPCTSTR)useful); Sleep(5000); } else if(srcFileName.Find("eclipse")==0 || srcFileName.Find("NetBeans")==0) { //char * xmFile=""; //SaveFileToStr("deploy.xml",xmFile); } } else continue; } */

53.選擇資料夾對話方塊 /* using System.IO; using System.Windows.Forms.Design;;//載入System.Design.dll的.Net API */ public class FolderDialog : FolderNameEditor { FolderNameEditor.FolderBrowser fDialog = new System.Windows.Forms.Design.FolderNameEditor.FolderBrowser(); public FolderDialog() { } public DialogResult DisplayDialog() { return DisplayDialog("請選擇一個資料夾"); }

public DialogResult DisplayDialog(string description) { fDialog.Description = description; return fDialog.ShowDialog(); } public string Path { get { return fDialog.DirectoryPath; } } ~FolderDialog() { fDialog.Dispose(); } }  FolderDialog aa = new FolderDialog(); aa.DisplayDialog(); if(aa.ShowDialog()==DialogResult.OK) { %%1 = aa.SelectedPath; }

54.刪除空資料夾 /* using System.IO; using System.Text.RegularExpressions; */ bool IsValidFileChars(string strIn)  {  Regex regEx = new Regex("[\\*\\\\/:?<>|\"]"); return !regEx.IsMatch("aj\\pg");  }  try { string path = %%1; if(!IsValidFileChars(path)) throw new Exception("非法目錄名!"); if(!Directory.Exists(path)) throw new Exception("本地目錄路徑不存在!"); DirectoryInfo dir = new DirectoryInfo(path); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); Queue<String> Folders = new Queue<String>(Directory.GetDirectories(aa.Path)); while (Folders.Count > 0) { path = Folders.Dequeue(); string[] dirs = Directory.GetDirectories(path); Directory.Delete(path); } foreach (string direct in dirs) { Folders.Enqueue(direct); } catch (Exception ep) { MessageBox.show(ep.ToString()); } }

55.傳送資料到剪貼簿 //using System.Windows.Forms; Clipboard.SetText(%%1);

56.從剪貼簿中取資料 //using System.Windows.Forms; IDataObject iData = Clipboard.GetDataObject(); string %%1; // 將資料與指定的格式進行匹配,返回bool if (iData.GetDataPresent(DataFormats.Text)) { // GetData檢索資料並指定一個格式 %%1 = (string)iData.GetData(DataFormats.Text); } else { MessageBox.Show("目前剪貼簿中資料不可轉換為文字","錯誤"); }

57.獲取檔案路徑的父路徑 //using System.IO; string %%2=Directory.GetParent(%%1);

58.建立快捷方式 //首先新增以下引用:COM下Windows Script Host Object Model,然後可以通過以下方法建立快捷方式。  /* using System.Runtime.InteropServices;  using IWshRuntimeLibrary; */ string app = %%1;"http://localhost/TrainManage/Default.aspx" string location1 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Favorites) + "\\培訓教學教務管理系統.url";  string location2 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory) + "\\培訓教學教務管理系統.url"; string location3 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Programs) + "\\培訓教學教務管理系統.url"; try {  // Create a Windows Script Host Shell class  IWshShell_Class shell = new IWshShell_ClassClass();  // Define the shortcut file  IWshURLShortcut shortcut = shell.CreateShortcut(location1) as IWshURLShortcut;  shortcut.TargetPath = app;  // Save it  shortcut.Save();  shortcut = shell.CreateShortcut(location2) as IWshURLShortcut;shortcut.TargetPath = app;  // Save it  shortcut.Save();  shortcut = shell.CreateShortcut(location3) as IWshURLShortcut;  shortcut.TargetPath = app;  // Save it  shortcut.Save(); } catch(COMException ex) {  Console.WriteLine(ex.Message);  }

59.彈出快捷選單 //在工具箱中找到ContextMenuStrip控制元件,並拖放至Form1窗體 //設計選單內容 //將contextMenuStrip1與窗體關聯。方法是先選定Form1,為其ContextMenuStrip屬性設定屬性值為contextMenuStrip1

60.資料夾複製到整合操作 /* using System.IO; using System.Collections; */ FolderDialog aa = new FolderDialog(); aa.DisplayDialog(); if (aa.Path != "") { string path = (aa.Path.LastIndexOf("\\") == aa.Path.Length - 1) ? aa.Path : aa.Path+"\\"; string parent = Path.GetDirectoryName(%%1); Directory.CreateDirectory(path + Path.GetFileName(%%1)); %%1 = (%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 : %%1 + "\\"; DirectoryInfo dir = new DirectoryInfo(%%1); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos()); while (Folders.Count>0) { FileSystemInfo tmp = Folders.Dequeue(); FileInfo f = tmp as FileInfo; if (f == null) { DirectoryInfo d = tmp as DirectoryInfo; Directory.CreateDirectory(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", path)); foreach (FileSystemInfo fi in d.GetFileSystemInfos()) { Folders.Enqueue(fi); } } else { f.CopyTo(f.FullName.Replace(parent, path)); } } }

61.資料夾移動到整合操作 /* using System.IO; using System.Collections; */ FolderDialog aa = new FolderDialog(); aa.DisplayDialog(); if (aa.Path != "") { string filename = Path.GetFileName(%%1); string path=(aa.Path.LastIndexOf("\\") == aa.Path.Length - 1) ? aa.Path : aa.Path + "\\"; if (Path.GetPathRoot(%%1) == Path.GetPathRoot(aa.Path)) Directory.Move(%%1, path + filename); else { string parent = Path.GetDirectoryName(%%1); Directory.CreateDirectory(path + Path.GetFileName(%%1)); %%1 = (%%1.LastIndexOf("\\") == %%1.Length - 1) ? %%1 : %%1 + "\\"; DirectoryInfo dir = new DirectoryInfo(%%1); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dir.GetFileSystemInfos()); while (Folders.Count > 0) { FileSystemInfo tmp = Folders.Dequeue(); FileInfo f = tmp as FileInfo; if (f == null) { DirectoryInfo d = tmp as DirectoryInfo; DirectoryInfo dpath = new DirectoryInfo(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", path)); dpath.Create(); foreach (FileSystemInfo fi in d.GetFileSystemInfos()) { Folders.Enqueue(fi); } } else { f.MoveTo(f.FullName.Replace(parent, path)); } } Directory.Delete(%%1, true); } }

62.目錄下所有資料夾複製到整合操作 /* using System.IO; using System.Collections; */ FolderDialog aa = new FolderDialog(); aa.DisplayDialog(); if (aa.Path != "") { string direc = %%1;//獲取選中的節點的完整路徑 foreach (string dirStr in Directory.GetDirectories(direc)) { DirectoryInfo dir = new DirectoryInfo(dirStr); ArrayList folders = new ArrayList(); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); folders.AddRange(fileArr); for (int i = 0; i < folders.Count; i++) { FileInfo f = folders[i] as FileInfo; if (f == null) { DirectoryInfo d = folders[i] as DirectoryInfo; Directory.CreateDirectory(aa.Path + d.Name); folders.AddRange(d.GetFileSystemInfos()); } else File.Copy(f.FullName, aa.Path + f.Name); } } }

63.目錄下所有資料夾移動到整合操作 /* using System.IO; using System.Collections; */ FolderDialog aa = new FolderDialog(); aa.DisplayDialog(); if (aa.Path != "") { TreeNode CurSelNode = this.DirectorytreeView.SelectedNode;//獲取選中的節點 string direc = this.GetNodeFullPath(CurSelNode);//獲取選中的節點的完整路徑 if (Path.GetPathRoot(direc) == Path.GetPathRoot(aa.Path)) foreach (string dir in Directory.GetDirectories(direc)) Directory.Move(dir, aa.Path); else { foreach (string dir2 in Directory.GetDirectories(direc)) { string parent = Path.GetDirectoryName(dir2); Directory.CreateDirectory(Path.Combine(aa.Path, Path.GetFileName(dir2))); string dir = (dir2.LastIndexOf("\\") == dir2.Length - 1) ? dir2 : dir2 + "\\"; DirectoryInfo dirdir = new DirectoryInfo(dir); FileSystemInfo[] fileArr = dirdir.GetFileSystemInfos(); Queue<FileSystemInfo> Folders = new Queue<FileSystemInfo>(dirdir.GetFileSystemInfos()); while (Folders.Count > 0) { FileSystemInfo tmp = Folders.Dequeue(); FileInfo f = tmp as FileInfo; if (f == null) { DirectoryInfo d = tmp as DirectoryInfo; DirectoryInfo dpath = new DirectoryInfo(d.FullName.Replace((parent.LastIndexOf("\\") == parent.Length - 1) ? parent : parent + "\\", aa.Path)); dpath.Create(); foreach (FileSystemInfo fi in d.GetFileSystemInfos()) { Folders.Enqueue(fi); } } else { f.MoveTo(f.FullName.Replace(parent, aa.Path)); } } dirdir.Delete(true); } } }

64.目錄下所有檔案複製到整合操作 /* using System.IO; using System.Collections; */ FolderDialog aa = new FolderDialog(); aa.DisplayDialog(); if (aa.Path != "") { string direc = %%1;//獲取選中的節點的完整路徑 foreach (string fileStr in Directory.GetFiles(direc)) File.Copy((direc.LastIndexOf("\\") == direc.Length - 1) ? direc + Path.GetFileName(fileStr) : direc + "\\" + Path.GetFileName(fileStr), (aa.Path.LastIndexOf("\\") == aa.Path.Length - 1) ? aa.Path + Path.GetFileName(fileStr) : aa.Path + "\\" + Path.GetFileName(fileStr)); }

65.目錄下所有檔案移動到整合操作 /* using System.IO; using System.Collections; */ FolderDialog aa = new FolderDialog(); aa.DisplayDialog(); if (aa.Path != "") { string direc = %%1;//獲取選中的節點的完整路徑 foreach (string fileStr in Directory.GetFiles(direc)) File.Move((direc.LastIndexOf("\\") == direc.Length - 1) ? direc + Path.GetFileName(fileStr) : direc + "\\" + Path.GetFileName(fileStr), (aa.Path.LastIndexOf("\\") == aa.P