基本的に私のコードをバッチファイル(.bat)からC#コンソールアプリケーションに移行しようとしています。私はVisual C#2010 Expressを使用しています。プライマリ機能は、コマンドラインユーティリティのホスト用のTUIベースのアシスタントです。私の問題は単純でなければならない。しかし私はそれだけで解決することができませんでした。C# - 特定のファイルタイプのディレクトリを列挙し、ループ内の各ファイルを使用します。
特定の拡張子のファイルごとにディレクトリを列挙しようとしています。パスを保存している間に、現在のファイルのファイル名は&の変数になります。その後、個々のファイルごとにその情報をcmd.exeに送信します。しかし、私はそれを正しくループする方法を理解することはできません。私がすでに持っているコードは正しいとは思わない。
@echo off
SETLOCAL EnableDelayedExpansion
:: Variables hardcoded for the sake of example.
:: Folder containing patches
set "pathDir=C:\Main\Directory\Path\External"
:: File to apply patches on
set "varFile=C:\Main\Directory\Path\file.tmp"
:: Utility that applies patches
set "progExt=C:\Main\Directory\Path\Program.exe"
cls
:: Main loop
For /F "delims=" %%A In (' DIR /B /O:N /A:-D "%pathDir%\*.patch" ') Do (
:: Announce current filename
echo Patching %%A
:: Any key to contine - Makeshift confirmation without cancel
pause
:: Arguments to invoke external application
"%progExt%" "%pathDir%\%%A" "%varFile%"
:: End Loop
)
cls
私がこれまでにC#でこの部分を持っている何を:私は再現するのに苦労していますセクションから[]
例可能System.String
string patches = Directory.GetFiles(pathDir, "*.patch");
戻り
string pathDir = @"C:\Main\Directory\Path\External";
string varFile = @"C:\Main\Directory\Path\file.tmp";
string progExt = @"C:\Main\Directory\Path\Program.exe";
string patches = Directory.GetFiles(@pathDir, "*.patch");
// Set variable for current file - Missing
string cmdDebug = "/C echo "; // enable with IF statements later
System.Diagnostics.Process.Start("CMD.exe", cmdDebug + pathDir + "&& echo " + varFile + "&& echo " + progExt + "&& echo " + patches + "&& pause");
// System.Diagnostics.Process.Start("CMD.exe","/C " + progExt + " " + curPatch + " " + varFile";
これは私のものでもあります:
using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Collections.Generic;
あなたはあなたのためにできることを忘れてしまった! cmdプロセスを開始するために、ディレクトリサービスについて、ファイルクラスについてなど、あなたは強力なツールを親指で利用しています。それらを使用してください。 – elzooilogico
@elzooilogico踏み石、私はそこに着くでしょう。私は大したことを忘れてしまった。これは、主にtk/tclに焦点を当てたFreeBSDおよびOS Xに変換して放棄した古いプロジェクトです。 Windowsから永遠に実行することはできません。 – Terus
すべての機能を有効にして、より良い理解を得ました。意図的にコードを壊してそこに到着しました。しかし、私は今、何が起こっているかをしっかりと把握しています。両方の答えは素晴らしかったし、私は両者がなければ私が現在持っている洞察を得ていないだろう。私はしかし、私の仕事で良い医師の例を実装している。私はそれを「正しい」答えと記しています。もう一度、ありがとう。私はいくつかの本を手に入れ、C#をより深く学ぶ必要があります。 – Terus