2017-07-14 9 views
0

で使用する私は、テキストファイルを解析し、それを削除/ファイルをコピーするために見つかったファイルのパス名を使用するようにWindows CMDスクリプトを使用します。抽出ファイルのパス文字列、WindowsのCMDスクリプト

ファイルパスが配置されているテキストファイルからサンプル:

"ターゲットファイル:D:TMC01_20170704042819.csv \ \ルート(101メガバイト2017年4月7日)"

上記の例を使用して、私は...以下のように作成したコマンドに、見つかったファイル名を移入するスクリプトが必要

XCOPY "D:\root\TMC01_20170704042819.csv" "D:\Quarantine" /s /y 
DEL "D:\root\TMC01_20170704042819.csv" 
+0

これまでに試したことは何ですか?あなたの努力を共有してください! – aschipfl

答えて

0

もう一つの方法は、PowerShellを使用することです。このスクリプトは、XCOPYおよびDELコマンドを生成します。同等のPowerShellコマンドも生成されます。 XCOPY /Sが単一のファイル名をコピーすることを意味するのではないかと私はよく分かりません。

PS C:\src\t> Get-Content .\scan001.ps1 
$filelist = Get-Content .\scan001.txt | 
    ForEach-Object { if ($_ -match '"Target file: (.*) \(.*') { $matches[1] } } | 
    ForEach-Object { 
     Write-Host "XCOPY `"$($matches[1])`" `"D:\Quarantine`" /S /Y" 
     Write-Host "DEL `"$($matches[1])`"" 
     Write-Host "Move-Item `"$($matches[1])`" `"D:\Quarantine`" -Force" 
    } 

実行例を示します。

PS C:\src\t> .\scan001.ps1 
XCOPY "D:\root\TMC01_20170704042819.csv" "D:\Quarantine" /S /Y 
DEL "D:\root\TMC01_20170704042819.csv" 
Move-Item "D:\root\TMC01_20170704042819.csv" "D:\Quarantine" -Force 
+0

ついにこれに費やす時間がありました。このスクリプトを実行しようとすると、以下のエラーが表示されます。C:\ src \ tからスクリプトを実行しています。スクリプト名はscan001.ps1で、スキャンするファイルの名前はscan001.txt ... – Sumo

+0

PS C :\ Src \ t> C:\ Src \ t \ scan001.ps1 Get-Process:引数 '\ scan001.ps1'を受け入れる位置パラメータが見つかりません。 Cで :\ SRC \トン\ scan001.ps1:1つの文字:1 + PSのGet-コンテンツ\ scan001.ps1 + ~~~~~~~~~~~~~~~~~~~~。 ~~~~~~~~~~ + CategoryInfo:InvalidArgument :(:) [Get-Process]、ParameterBindingException + FullyQualifiedErrorId:PositionalParameterNotFound、Microsoft.PowerShell.Commands.GetProcessCommand – Sumo

+0

このスクリプト。最初の行は 'Get-Content'を使います。 – lit

0

以下のスクリプトはそれを行います。 XCOPYの前のechoを削除してください。それは引数として名前を抽出したいファイルを期待するバッチスクリプトです。

使用法:script.bat filelist.txt

@echo off 
setlocal enabledelayedexpansion 

if [%1] == [] (
    echo Usage %0 ^<filename^> 
    goto eof 
) 

set "filelist=%1" 

for /F "delims=(tokens=1" %%A in (%filelist%) do (
    set "filename=%%A" 

    rem remove "Target file: " from beginning 
    set "find=*Target file: " 
    call set filename=%%filename:!find!=%% 
    rem after: "D:\root\TMC01_20170704042819.csv " 

    rem remove space at the end 
    set "filename=!filename:~0,-1!" 

    echo xcopy "!filename!" "D:\Quarantine" /s /y 
    echo DEL "!filename!" 
) 

:eof 
関連する問題