C#コンパイラーでエラー発生
以下長文になりますが、一読の上対処方法を教えて下さい。
便利な記事を見つけました。
https://q7z.hatenablog.com/entry/2016/02/10/013850
階層が深いディレクトリー内のファイルを現在の階層(ディレクトリ)に集める事ができる。
私にとって、とても便利な情報です。
この辺になってくるともうバッチだけでは対処できなくなってくるのでプログラムを組む必要があると記載されています。
例として以下のように記載されていてC#のコードも添付されています。
「これをVisual StudioでC#コンソールアプリケーションとしてビルドしてできたexeファイルを、batと同様の場所に置いてファイル名を実行すると動きます。
C#で書きましたが、他の言語でも同じことはできるはずです。」
自分は、C#コンパイラーも持っていないのでexeファイルを作成できる環境が無いと一度はあきらめましたが
以下の記事を見つけてできそうなのでやってみました。
https://www.sejuku.net/blog/104421
以下手順です。
1)コマンドプロンプトを管理者権限で起動
2)以下のコマンドを入力
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe C:\Users\konno\C+TEST\c+test.cs
3)以下の文字がプロンプト画面に表示されます
C:\Users\konno\C+TEST>C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe C:\Users\konno\C+TEST\c+test.cs
Microsoft (R) Visual C# Compiler version 4.8.4084.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.
This compiler is provided as part of the Microsoft (R) .NET Framework,
but only supports language versions up to C# 5, which is no longer the latest version.
For compilers that support newer versions of the C# programming language,
see http://go.microsoft.com/fwlink/?LinkID=533240
英文を翻訳するとコンパイラがサポート外なので上記のURLにのリンクを開くと下記に移動しました。
https://github.com/dotnet/roslyn
移動先が正しいのかが分からないし何をどうしたら良いか?判断できません。
良きアドバイスをお願いします。
以下、英文の翻訳
このコンパイラは、Microsoft (R) .NET Frameworkの一部として提供されています。
このコンパイラは、Microsoft (R) .NET Frameworkの一部として提供されていますが、最新バージョンではないC# 5までの言語バージョンしかサポートしていません。
新しいバージョンのC#をサポートしているコンパイラーはこちら。
------------------------------------
なお、私の C:\Windows\Microsoft.NET\Framework\ のフォルダーには
1041
v1.0.3705
v1.1.4322
v2.0.50727
v3.0
v3.5
v4.0.30319
がありますが、
v4.0.30319がこの中では最新のようなのでこれを利用しました。
間違っていますか ?
-----------------------------------------
以下がC+test.csのコードです。
using System.IO;
namespace ZapAll
{
class Program
{
private static readonly char separator = Path.DirectorySeparatorChar;
static void Main(string[] args)
{
foreach (var item in Directory.EnumerateDirectories(Directory.GetCurrentDirectory()))
{
Zap(item);
}
}
static void Zap(string path)
{
// process children directories first
foreach (var dir in Directory.EnumerateDirectories(path))
{
Zap(dir);
}
// zap all files
foreach (var oldPath in Directory.EnumerateFiles(path))
{
var newPath = oldPath.Insert(oldPath.LastIndexOf(separator), "_");
newPath = newPath.Remove(newPath.LastIndexOf(separator), 1);
File.Move(oldPath, newPath);
}
// delete directory
Directory.Delete(path);
}
}
}
お礼
どこに・・必死に探してみるものの見つからず・・・ 詳しくお願いします;;