台灣最大程式設計社群網站
線上人數
1647
 
會員總數:241132
討論主題:186803
歡迎您免費加入會員
討論區列表 >> C# >> C# 偵測資料夾並更改檔名
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
C# 偵測資料夾並更改檔名
價值 : 80 QP  點閱數:6242 回應數:13

樓主

零八
門外漢
0 1
8 1
發送站內信

請問各位高手~
小弟使用轉檔軟體將影片檔轉成圖片檔,可是每轉完一部影片就會自動新增一個資料夾
來存放轉好的圖片檔,可是資料夾的檔案名稱和它裡面的圖片檔名稱每次都會亂跳,
例如:現在轉好一小段影片,它的資料夾名稱是1_00.01.12 (2013-10-18 上午 11-56-26)
資料夾裡面那些圖片檔的名稱是1_00.01.12 001,下次再轉另一段影片的話,檔案名稱又會不一樣了
所以小弟想要讓轉檔軟體在新增資料夾後就自動改檔名成前面日期,後面001,002這樣,
但我現在只會讓程式執行後才能把檔名改掉,而且還必須指定要改那個資料夾,拜託各位高手幫幫忙!!!!!!

程式碼如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;


namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
int i = 0;
const string fileFormat = "{0}.{1}.jpg";
string fileDate = DateTime.Now.ToString("yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
var files = Directory.GetFiles(@"C:\Users\m217\Pictures\FreeVideoToJPGConverter\1_17.14.16 (2013-9-7 下午 02-43-21)", @"*.*");

i = 0;
foreach (string f in files)
{
//依順序改檔名
string fileCount = (++i).ToString("D3"); //如果要3位就改成D3
string newFileName = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(f), string.Format(fileFormat, fileDate, fileCount));
System.IO.File.Move(f, newFileName);
}
label1.Text = "改檔名成功";
}

}

}

搜尋相關Tags的文章: [ C# 偵測資料夾並更改檔名 ] ,
本篇文章發表於2013-11-04 17:43
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

香帥
檢舉此回應
請參考
http://msdn.microsoft.com/zh-tw/library/system.io.filesystemwatcher.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
監視Created發生時候,去配合您的程式碼
本篇文章回覆於2013-11-04 19:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

零八
檢舉此回應
香帥:
謝謝您的回答!
不好意思,小弟還是新手,看不太懂
可以說得更明確一點嗎?
本篇文章回覆於2013-11-04 20:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

凱爾
捐贈 VP 給 凱爾 檢舉此回應
Hi 你已做到更改某個資料夾下的檔名,剩下的只要抓到有幾個資料夾就好了吧?
不考慮效率,簡單快速改一下,您可參考一下,不知道符不符合你的需求
如果不想更改過的又改一次,可以在Save的地方存在你要的資料夾,將原本的刪除就可以了


MSDN抓取資料夾參考
本篇文章回覆於2013-11-05 22:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

阿雷
檢舉此回應
凱爾:
謝謝您的回答!
您的程式執行過後雖然可以一次改掉好幾個資料夾裡面那些圖片的名稱
可是您好像有點誤會小弟的意思
小弟使用轉檔軟體將一段影片檔轉成圖片檔,轉完之後它會自動新增一個資料夾來存放這些圖片
所以想要讓它在資料夾新增後就自動改資料夾的檔名還有裡面那些圖片檔的檔名
拜託您了!!!!!!
本篇文章回覆於2013-11-06 20:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

凱爾
捐贈 VP 給 凱爾 檢舉此回應
那就只能照二樓大大的給的建議去做了,以下是簡單的Sample



建議可以對FileSystemWatcher這個類別去做一些功課
本篇文章回覆於2013-11-07 20:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

阿雷
檢舉此回應
凱爾:
感謝您的回答!
小弟還是新手,還不懂要怎麼將這個FileSystemWatcher結合我之前的程式碼
可以請您幫忙小弟一下嗎?拜託了!!!
本篇文章回覆於2013-11-07 21:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

凱爾
捐贈 VP 給 凱爾 檢舉此回應
簡單能符合需求大致上是以下這樣....
剩下的Exception處理或者是效率問題就自己試著解決囉

本篇文章回覆於2013-11-08 05:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

阿雷
檢舉此回應
凱爾:
感謝您的回答!
可是這個程式執行後怎麼都沒效果?
這個程式不是應該會偵測指定的路徑裡有沒有檔案新增然後再去改檔名嗎?
我將轉檔後指定儲存的路徑設定跟程式碼裡面的路徑一樣,都在C:\Users\Saved Games
可是程式執行過後,就算那個路徑裡面新增了資料夾來存放圖片檔,也沒有改到檔名耶

本篇文章回覆於2013-11-08 11:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

凱爾
捐贈 VP 給 凱爾 檢舉此回應
我是寫在D:\temp,你存在C:\的話我不確定會不會有權限問題造成存取路徑
我只是針對功能性寫些Sample code給您參考,沒辦法幫你寫出完整功能

試著用Visual Studio開debug模式逐行程式碼去看問題到底在哪..
本篇文章回覆於2013-11-08 11:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

阿雷
檢舉此回應
凱爾:
感謝您的回答!
請問您有試過這個程式執行後的功能嗎?
就是新增資料夾和裡面的檔案時會自動改檔名嗎?
因為我程式debug後沒有錯誤耶
請問該怎麼辦呢?拜託您了><"
本篇文章回覆於2013-11-08 13:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

凱爾
捐贈 VP 給 凱爾 檢舉此回應
我是可以Run的喔,執行程式後:
1.在D:\temp\底下新增一個資料夾,就如同你說明的1_00.01.12 (2013-10-18 上午 11-56-26)
2.在這個資料夾新增一個.txt,新增完後就會觸發程式改成XXXX.001.jpg (這部分是你原本的程式)

Debug沒有錯誤不代表沒有問題
請試著下中斷點->F5執行Debug->F11逐行看程式怎麼跑

[VisualStudio]新手必讀-中斷點的使用
本篇文章回覆於2013-11-08 13:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

阿雷
檢舉此回應
凱爾:
謝謝您的回答!
我大概知道為什麼了
因為我資料夾新增後裡面的檔案.jpg檔,而您的程式似乎指定新增文字檔才會觸發程式改檔名
請問要怎麼做才能在新增.jpg檔的時候將檔名自動改掉呢?
還有資料夾的檔名也能順便改成日期嗎? 感覺快成功了,拜託您了!!!!!!
本篇文章回覆於2013-11-08 13:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

凱爾
捐贈 VP 給 凱爾 檢舉此回應
1.我的jpg是可以的,只能你自己找問題囉
2.資料夾檔名應該不難吧^^"
你也可以試著將檔案移到另一個目錄底下:



---
此篇不再回覆囉,請自己修改或試試,一直要求答案是不會進步的 ^^"

部分程式參考:[C#]FileSystemWatcher 處理檔案須注意檔案是否Ready
本篇文章回覆於2013-11-09 12:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.