2014-09-10 101 views
0

我正在尋找一種基於通配符爲變量指定文件名的方法。這是我到目前爲止:CMD將變量分配給文件夾中的文件名

cd Y:\FileLocation\FileName1.txt 

For %%a Y:\FileLocation\FileName1*.txt 
Set Claims= %~nI 

不確定您是否可以指向一個文件並從該特定文件中獲取屬性並分配文件名。或者我可以如何去做這件事。我確實需要使用通配符,因爲文件名可以有日期戳,但是文件名的根將始終保持不變。

+0

到目前爲止您的代碼無法正常工作? – 2014-09-10 16:57:12

+0

%% a此時意外, 和變量Claims =%〜nI不是文件名,因爲我在找。 – 2014-09-10 17:22:49

+0

嘗試在命令行鍵入'help for'。 – ths 2014-09-10 22:07:02

回答

1

對我來說是什麼工作原理是這樣的語法:

For %%a IN (D*.lnk) DO Set Claims=%%~na 

所以更改代碼以匹配工作,它會讀...

cd /d "Y:\FileLocation" 
For %%a IN ("Y:\FileLocation\FileName1*.txt") DO Set "Claims=%%~na" 

改變我做了:
1 )添加了關鍵字「IN」
2)在文件規範周圍添加了括號
3)添加了關鍵字「DO」並刪除了新行
4)將您的「%〜nI」更改爲「%%〜na」

+0

只是評論說在這種情況下不需要'cd'命令。 – foxidrive 2014-09-11 04:22:29

+0

當我嘗試這個時,我得到錯誤:%% a在這個時候是意外的。 另外,當我嘗試調用變量來測試它是否工作時,以下工作將會如何工作:回聲聲明?或者我需要將其稱爲%Claims% – 2014-09-12 19:10:30

+0

您可能得到了「此時考慮的因素」,因爲您是從命令提示符執行代碼,而不是從.bat文件中執行代碼。要從命令提示符執行,請在兩個地方(「%%」)的每一個地方刪除兩個「%」中的一個,以使行顯示如下: 對於%a IN(「Y:\ FileLocation \ FileName1 * txt「)DO設置」Claims =%〜na「 – 2014-09-13 09:34:54

相關問題