2009-08-07 7 views
2

ディレクトリを経由してすべての* .txtファイルをdestフォルダに移動するDOSバッチ処理を作成したい場合は、txtファイルの最初の文字から開始してください。ファイルを関連フォルダに移動するDOSバッチ処理

Ex。
abc.txtは... ""
def.txtは "D" ように
とをフォルダに移動するフォルダに移動します

+0

説明を明確にするために、純粋なDOSやWindowsのコマンドプロンプトで使用するバッチファイルを意味しますか? – Synetech

答えて

4

for %i in (*.txt) do (set FOLDER=%i & move %i %FOLDER:~0,1%) 

バッチファイルで、あなたはこのように、%さんを倍増する必要があります:

for %%i in (*.txt) do (set FOLDER=%%i & move %%i %FOLDER:~0,1%) 
+0

存在しない場合は**を追加しています%FOLDER:〜0,1%md% FOLDER:〜0,1%** **移動**単語が重要である直前に、ファイルを "a"、 "b"などのファイルに移動します...しかし、それは機能します。 **%FOLDER:〜0,1%\ **のようなパスのバックスラッシュで移動コマンドを終了し、安全な側にします。 – Jay

-1
copy sourcepath\a*.txt destinationpath\a 

コピーソースパス\ B * .txtのdestinationpath \ B

コマンドラインから
+0

私はディレクトリを通過する自動スクリプトが必要です。それ自身でこの正確なことを行います:) –

+0

コピーして移動することは言及していません – Snekse

0

問題のポイントは、最初の文字を抽出することだと思います。

あなたは、ファイル名の最初の文字を抽出するためにbiterscripting CHEXコマンド(文字抽出)を使用することができ、ファイル名の最初の文字を抽出するために〜文字

set str=filename 
echo %str:~0,1% 
f 
0

を使用することができます。ここにスクリプトがあります。ファイルがC:\ My Directoryにあるとします。

# Script move1.txt 
# Change directory to My Directory. 
cd "C:\My Directory" 

# Collect a list of *.txt files. 
var str list ; lf -n "*.txt" > $list 

# Go thru files one by one. 
while ($list <> "") 
do 

    # Get the next file. 
    var str file ; lex "1" $list > $file 

    # $file now has full path of a found *.txt file. Get just the file name. 
    var str filename ; stex -p "^/^l[" $file > $filename 

    # $filename has just the file name. Get the first character. 
    var str firstchar ; chex -p "1" $filename > $firstchar 

    # $firstchar now has the first char of file name. The folder where we 
    # want to move this file is, then, C:\Destimation Folder\$firstchar . 
    var str destfolder ; set $destfolder = "C:\Destination Folder\"+$firstchar 

    # Move $file to $destfolder. 
    system move ("\""+$file+"\"") ("\""+$destfolder+"\"") 

done 

スクリプトはビットスクリプティング(http://www.biterscripting.com)です。スクリプトをC:\ Scripts \ move1.txtとして保存するには、ビットスクリプトを開始するには、次のコマンドを入力します。

script move1.txt 

スクリプトを定期的に実行する必要がある場合は、タスクスケジューラで次のコマンドをスケジュールします。

"C:\biterScripting\biterScripting.exe" "move1.txt" 

私はスクリプトをテストしていません。サンプルファイルでテストしました。 "C:\ My Directory"と "C:\ Destination Folder"を正しい値に変更してください。ファイル名とパスには必ず二重引用符を使用してください。

一般的な形式:これはどのように

0

は1行です の%A(ABCDEFGHIJKLMNOPQRSTU VWXYZ)%に\のNULを存在しない場合のためのMD%&%に*移動%存在している場合* %このmodは(OPあたり)だけでTXTファイルを行います

を: ...%*を%に* .txtの%を移動.TXT

または1つは、これを高めることができる存在する場合コマンドラインで拡張機能のマッチングを許可するには、 "%% a *%1 move %% a *%1 %% a"と入力してください。これはおそらく%1にドットを必要とします(これは今のところテストしたくないと思いますが、これが問題であればいつでも%1!==!を使用して一般形式と%1固有のコマンドラインとバットの場合、%sは通常通り(%a - > %% a)倍増します。

この解決策では、ファイル名にスペースが含まれるのを避けることができますが、(特定の文字で始まるファイルがない場合でも)すべての文字のサブディレクトリになります。

、現在のフォルダに:-) ...すべてのTSVファイルを

0

カウントを上記元の行を入力するよりも、この中に入力に時間が私を撮影しています。

for /f "delims=|" %%f in ('dir *.tsv /b') do (
echo %%~nf 
findstr /R /N "^" %%f | find /C ":" 
) 
関連する問題